如何在android上执行集成测试(或如何在TestCase中获取和注入几个组件)

时间:2013-07-13 17:45:02

标签: android testing service integration-testing

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

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

我已经google了很多,但现在我只能看到三种解决方法:

  • 使应用程序更原始。仅使用类而不是服务;
  • 不要注射。相反,在服务中获取依赖项。但是这种方式我必须等待依赖(服务)绑定在服务内的某些地方。这将是一个糟糕的代码。我不能使用onServiceConnected(),因为有时我可能需要多个服务作为依赖。
  • 不使用测试: - )

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

1 个答案:

答案 0 :(得分:0)

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

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