Android系统。测试用例的绑定服务成功但服务未在getRunningServices()结果中列出

时间:2015-01-27 16:45:03

标签: java android

我正在为我的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;。仅当执行线程在服务方法之一时服务是否存在?

0 个答案:

没有答案