安卓服务测试

5
如何测试服务返回的IBinder对象中onBind方法?
1个回答

3

根据您在上下文和服务之间使用的远程接口(在远程调用场景中),可以按照以下方式进行操作:

IBinder service = this.bindService(new Intent(TestService.class.getName()));
assertNotNull(service);
assertTrue(service instanceof ITestServiceCall); //see if the service returns the correct interface
ITestServiceCall iTestServiceCall = ITestServiceCall.Stub.asInterface(service);
assertNotNull(iTestServiceCall);
iTestServiceCall.doSomething();

ITestServiceCall是在AIDL文件(ITestServiceCall.aidl)中定义的接口。

但在此之前,您需要确保您的服务在onBind()上正确返回您的接口的Stub。

希望这可以帮助您。


在调用bindService后立即测试你的绑定器是个不好的主意。这个方法是异步的,在你的ServiceConnection的onServiceConnected被调用之前不会返回任何有趣的内容。 - Snicolas
1
ServiceTestCase中没有使用ServiceConnection.onServiceConnected(),这就是为什么我们在bindService()之后立即获取IBinder对象的原因。我认为这与实际服务流程不同。 - Surya Wijaya Madjid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接