ContentProvider在Junit测试环境之前启动服务

时间:2016-01-13 08:37:46

标签: android android-service android-contentprovider android-testing

我有一大堆aidl service的现有测试。测试类扩展ServiceTestCase。他们都工作正常,直到我最近在同一个包中添加了新的ContentProvider。现在,当我运行测试时,一个或两个现有测试随机失败。

失败的原因是我绑定了来自onCreate()的{​​{1}}的服务。当测试框架重新启动该过程时,ContentProvider将自动创建,并启动ContentProvider BEFORE 测试已执行aidl service。这导致服务正在运行,即使我没有从特定测试启动它。这会导致导致随机测试失败的时序问题。

我尝试了以下事项:

  1. 如果我从新setup的{​​{1}}发出bind来电,则所有测试仍然成功通过。 (注意:现有测试都不需要此提供程序 - 我仍需要为此提供程序添加测试)

  2. 我尝试在测试中设置一些布尔值并在提供程序的onCreate()中检查它 - 但这不起作用,因为提供程序在junit测试的onCreate之前初始化

  3. 如果我在之前未调用它的测试中添加ContentProvider,那么该服务实际上已启动2次,我可以看到在单元测试期间运行的2个实例

0 个答案:

没有答案