我有一大堆aidl service
的现有测试。测试类扩展ServiceTestCase
。他们都工作正常,直到我最近在同一个包中添加了新的ContentProvider
。现在,当我运行测试时,一个或两个现有测试随机失败。
失败的原因是我绑定了来自onCreate()
的{{1}}的服务。当测试框架重新启动该过程时,ContentProvider
将自动创建,并启动ContentProvider
BEFORE 测试已执行aidl service
。这导致服务正在运行,即使我没有从特定测试启动它。这会导致导致随机测试失败的时序问题。
我尝试了以下事项:
如果我从新setup
的{{1}}发出bind
来电,则所有测试仍然成功通过。
(注意:现有测试都不需要此提供程序 - 我仍需要为此提供程序添加测试)
我尝试在测试中设置一些布尔值并在提供程序的onCreate()中检查它 - 但这不起作用,因为提供程序在junit测试的onCreate
之前初始化
如果我在之前未调用它的测试中添加ContentProvider
,那么该服务实际上已启动2次,我可以看到在单元测试期间运行的2个实例