我有一个应用程序,它有一些相互通信的服务。它们都在一个进程中工作,因此它们不需要 Messenger。在应用程序运行时,我的主要服务连接到其他服务并将服务作为依赖项注入。例如 ImportService 需要 ParserService 执行一些操作,所以 ImportService 有方法 setParserService(ParserService service);
它在实际操作中运行良好,但我无法为需要依赖项的服务运行测试,因为 ServiceTestCase.bindService() 只知道如何启动/绑定它实际测试的服务。它无法启动/绑定我需要作为依赖项的其他服务。它在我尝试获取其他服务时编译,但在尝试调用 bindService() 时崩溃。
我用谷歌搜索了很多,但现在我只能看到三种解决方法:
- 使应用程序更原始。只使用类而不是服务;
- 不宜打针。取而代之的是在服务内部获取依赖项。但是这样我将不得不等待依赖项(服务)绑定在服务内部的某些地方。这将是一个糟糕的代码。我不能使用 onServiceConnected() 因为有时我可能需要多个服务作为依赖项。
- 不使用测试:-)
所以,简而言之,问题是:我可以使用 ServiceTestCase 在测试中绑定一个特定的服务。但是如何在一次测试中绑定 2、10 或更多服务?