从仪器测试用例绑定到服务

时间:2013-09-27 18:30:21

标签: java android testing service

我有一个检测测试用例试图绑定到单独的应用程序中的服务,以便在测试运行器和单独的应用程序之间进行进程间通信(使用Android接口定义语言)。每次我从测试用例类中调用服务类中定义的Stub方法之一时,我都会得到一个空指针异常。我注意到我的Service类中的onStartCommand方法永远不会被调用,表明永远不会发生绑定。我主要担心的是:甚至可以在与测试运行器不同的进程中绑定服务?如果是这样,我在实施中缺少什么?

2 个答案:

答案 0 :(得分:0)

仪器测试和测试运行器用于单元测试和小范围功能测试。它们无法像您正在进行的大规模集成测试一样正常工作。要测试活动是否跨流程使用AIDL绑定到服务,您需要编写一个运行服务的示例活动。

答案 1 :(得分:0)

你可以采取两种方式

  1. 添加检测代码作为目标应用程序(服务应用程序)的一部分。
  2. 从目标应用程序(服务应用程序)创建.aidl文件,并将.aidl文件添加到客户端应用程序(检测应用程序)。那么只有你能够使用Stub绑定服务,如

    SampleService.Stub sampleService = new SampleService.Stub.asInterface((IBinder)boundService)

  3. 有关创建.aild的更多详细信息:https://developer.android.com/guide/components/aidl.html