1

我有一个应用程序,它有一些相互通信的服务。它们都在一个进程中工作,因此它们不需要 Messenger。在应用程序运行时,我的主要服务连接到其他服务并将服务作为依赖项注入。例如 ImportService 需要 ParserService 执行一些操作,所以 ImportService 有方法 setParserService(ParserService service);

它在实际操作中运行良好,但我无法为需要依赖项的服务运行测试,因为 ServiceTestCase.bindService() 只知道如何启动/绑定它实际测试的服务。它无法启动/绑定我需要作为依赖项的其他服务。它在我尝试获取其他服务时编译,但在尝试调用 bindService() 时崩溃。

我用谷歌搜索了很多,但现在我只能看到三种解决方法:

  • 使应用程序更原始。只使用类而不是服务;
  • 不宜打针。取而代之的是在服务内部获取依赖项。但是这样我将不得不等待依赖项(服务)绑定在服务内部的某些地方。这将是一个糟糕的代码。我不能使用 onServiceConnected() 因为有时我可能需要多个服务作为依赖项。
  • 不使用测试:-)

所以,简而言之,问题是:我可以使用 ServiceTestCase 在测试中绑定一个特定的服务。但是如何在一次测试中绑定 2、10 或更多服务?

4

1 回答 1

0

ServiceTestCase提供了一个框架,您可以在其中在受控环境中测试服务类。它为[single] Service的生命周期提供基本支持,并提供挂钩,您可以使用这些挂钩注入各种依赖项并控制测试 Service 的环境。

如果您正在执行各种服务的集成测试,您应该将它们作为使用它们的活动应用程序的一部分进行测试。

于 2013-07-14T03:52:15.213 回答