运行多个测试时,Robolectric会忽略自定义和测试应用程序类

时间:2013-12-28 22:11:22

标签: android eclipse unit-testing robolectric

对于Android应用,我有Robolectric单元测试。我从Eclipse运行它们。

我使用Robolectric功能为Robolectric提供替换Application类。这个类叫TestApplication,扩展我的应用程序类,调用它MyApplication,扩展Android Application类。

我发现,当我运行单个测试用例时,Robolectric按预期使用替代Application类。但是,如果我为项目中的所有测试创建运行配置,Robolectric将恢复使用Android Application类。它会忽略TestApplicationMyApplication

可能导致这种情况的原因是什么?提前谢谢!

2 个答案:

答案 0 :(得分:1)

我遇到了与robolectric类似的问题,其中测试套件会失败,但单个测试运行正常。事实证明,在运行套件时存在时间问题。尝试添加等待计时器或睡眠,看看它是否有效

答案 1 :(得分:1)

问题的原因似乎是当Eclipse为包或整个项目运行“运行配置”而不是单个测试类时,Robolectric没有使用我的项目的AndroidManifest.xml。

有效的修复方法是使用Robolectric的配置功能来提供清单的位置。见here

@Config和属性文件解决方案都适用于我。我更喜欢属性文件,因为它适用于整个项目,而注释必须在每个测试类上。

属性文件应命名为“org.robolectric.Config.properties”,你应该将它放在类路径上(我是通过将文件放在测试项目的源文件夹中来完成的。)

假设您有TestMyProject包含MyProject的Robolectric测试,该文件应包含以下内容。 (以下路径相对于TestMyProject)。

manifest=../MyProject/AndroidManifest.xml