2

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

4

2 回答 2

0

仪器测试和测试运行器用于单元测试和小范围功能测试。它们不适用于您正在做的大规模集成测试。要使用 AIDL 跨进程测试 Activity 是否绑定到服务,您需要编写一个示例 Activity 来练习该服务。

于 2013-09-27T19:40:26.323 回答
0

你可以做的两种方法

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

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

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

于 2016-09-27T13:23:01.617 回答