package com.fernandocejas.frodo; import android.content.Context; import android.content.SharedPreferences; import android.content.res.Resources; import java.util.HashMap; import java.util.Map; import org.junit.Rule; import org.junit.rules.TestRule; import org.junit.runner.Description; import org.junit.runner.RunWith; import org.junit.runners.model.Statement; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricGradleTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.fakes.RoboSharedPreferences; /** * Base class for Robolectric tests. * Inherit from this class to create a test. */ @RunWith(RobolectricGradleTestRunner.class) @Config(constants = BuildConfig.class, application = ApplicationStub.class, sdk = 21) public abstract class AndroidUnitTest { @Rule public TestRule injectMocksRule = new TestRule() { @Override public Statement apply(Statement base, Description description) { MockitoAnnotations.initMocks(AndroidUnitTest.this); return base; } }; protected static Context context() { return RuntimeEnvironment.application; } protected static Resources resources() { return context().getResources(); } protected static SharedPreferences sharedPreferences(String name, int mode) { return new RoboSharedPreferences(new HashMap<String, Map<String, Object>>(), name, mode); } }