In this document
The Android Testing Support Library includes a set of JUnit rules to be used
with the
AndroidJUnitRunner
. JUnit rules provide
more flexibility and reduce the boilerplate code required in tests.
TestCase
objects like ActivityInstrumentationTestCase2
and ServiceTestCase
are deprecated in favor of ActivityTestRule
or ServiceTestRule
.
ActivityTestRule
This rule provides functional testing of a single activity. The activity under
test will be launched before each test annotated with @Test
and before any
method annotated with @Before
. It will be terminated after the test is
completed and all methods annotated with @After
are finished. The activity
under test can be accessed during your test by calling
ActivityTestRule.getActivity()
.
The following code snippet demonstrates how to incorporate this rule into your testing logic:
@RunWith(AndroidJUnit4.class)
@LargeTest
public class MyClassTest {
@Rule
public ActivityTestRule<MyClass> mActivityRule =
new ActivityTestRule(MyClass.class);
@Test
public void myClassMethod_ReturnsTrue() { ... }
}
ServiceTestRule
This rule provides a simplified mechanism to start up and shut down your service
before and after the duration of your test. It also guarantees that the service
is successfully connected when starting a service or binding to one. The service
can be started or bound using one of the helper methods. It will automatically
be stopped or unbound after the test completes and any methods annotated with
@After
are finished.
@RunWith(AndroidJUnit4.class)
@MediumTest
public class MyServiceTest {
@Rule
public final ServiceTestRule mServiceRule = new ServiceTestRule();
@Test
public void testWithStartedService() {
mServiceRule.startService(
new Intent(InstrumentationRegistry.getTargetContext(),
MyService.class));
// Add your test code here.
}
@Test
public void testWithBoundService() {
IBinder binder = mServiceRule.bindService(
new Intent(InstrumentationRegistry.getTargetContext(),
MyService.class));
MyService service = ((MyService.LocalBinder) binder).getService();
assertTrue("Service didn't return true",
service.doSomethingToReturnTrue());
}
}