我正在为我的Android服务编写单元测试。我可以从测试用例绑定服务并调用远程方法。但检查服务是否运行失败。
检查方法:
private boolean isServiceRunning() {
final ActivityManager activityManager = (ActivityManager) this
.getSystemContext().getSystemService(Context.ACTIVITY_SERVICE);
final List<RunningServiceInfo> services = activityManager
.getRunningServices(Integer.MAX_VALUE);
boolean serviceFound = false;
for (RunningServiceInfo runningServiceInfo : services) {
if (runningServiceInfo.service.getClassName().equals(
MyService.class.getName())) {
serviceFound = true;
}
}
return serviceFound;
}
并测试:
public void testInvokeRemoteMethod() {
Manager manager = null;
IBinder binder = bindService(new Intent("com.example.myservice.Manager"));
manager = Manager.Stub.asInterface(binder);
int ret = 0;
try {
ret = manager.testMethod();
} catch (RemoteException e) {
e.printStackTrace();
}
assertTrue(ret == -55);
assertTrue(isServiceRunning());
}
第二次断言时测试失败。
当我开始服务&#34;手动&#34;我没有错。
getSystemContext().startService(new Intent("com.example.myservice.Manager"));
assertTrue(isServiceRunning());
ServiceTestCase.bindService()上的文档说:&#34;该标志被假定为BIND_AUTO_CREATE&#34;。仅当执行线程在服务方法之一时服务是否存在?