Migrate AndroidTestCase to AndroidJUnit4 - thuytrinh/android-guides GitHub Wiki
Before:
public class SomeClassTest extends AndroidTestCase {
private SomeClass klass;
@Override protected void setUp() throws Exception {
super.setUp();
// This old way that we all get used to.
final Context context = getContext();
final SharedPreferences preferences = context.getSharedPreferences(
SomeClassTest.class.getSimpleName(),
Context.MODE_PRIVATE
);
klass = new SomeClass(context, preferences);
}
public void testShouldBeTrue() {
// I hate that prefix 'test' though!
}
}
After:
@RunWith(AndroidJUnit4.class)
public class SomeClassTest {
private SomeClass klass;
@Before public void setUp() {
// InstrumentationRegistry will do the trick!
// We can use this context to test implementations of SQLiteOpenHelper.
final Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
// It's also easy to create mock SharedPreferences for testing.
final SharedPreferences preferences = context.getSharedPreferences(
SomeClassTest.class.getSimpleName(),
Context.MODE_PRIVATE
);
klass = new SomeClass(context, preferences);
}
@Test public void shouldBeTrue() {
// Do something with klass and assert it here.
}
}