如果你在应用中使用了Service,你应该来测试这个Service来确保它正常工作。你可以创建仪表测试来验证Service的行为是否正确;比如,service保存和返回有效的数值并正常的处理数据。
Android Testing Support Library在隔离状态下测试你的Service对象的API。ServiceTestRule类会在你的单元测试类运行之前就启动service,在测试完成之后关闭服务。通过这个规则,你可以保证service会在你的测试方法运行之前建立。
ServiceTestRule类不支持IntentService对象的测试。
配置测试环境查看第一篇
创建Service的整合测试你的整合测试需要按照Junit 4测试类的规则来编写。
为了创建一个service的整合测试,在类开始的地方添加 @RunWith(AndroidJUnit4.class) 注解。你同样需要声明AndroidJUnitRunner类。
接下来通过@Rule注解创建一个ServiceTestRule实例。
@Rule
public final ServiceTestRule mServiceRule = new ServiceTestRule();
接下来的示例显示创建一个service的整合测试类。
@Test
public void testWithBoundService() throws TimeoutException {
// 创建Service Intent
Intent serviceIntent =
new Intent(InstrumentationRegistry.getTargetContext(),
LocalService.class);
// Service通过Intent传递数据
serviceIntent.putExtra(LocalService.SEED_KEY, 42L);
// 绑定service
IBinder binder = mServiceRule.bindService(serviceIntent);
LocalService service =
((LocalService.LocalBinder) binder).getService();
// 验证Service是否正常工作
assertThat(service.getRandomInt(), is(any(Integer.class)));
}
本文作者:宋志辉