对于Android应用,我有Robolectric单元测试。我从Eclipse运行它们。
我使用Robolectric功能为Robolectric提供替换Application
类。这个类叫TestApplication
,扩展我的应用程序类,调用它MyApplication
,扩展Android Application
类。
我发现,当我运行单个测试用例时,Robolectric按预期使用替代Application类。但是,如果我为项目中的所有测试创建运行配置,Robolectric将恢复使用Android Application
类。它会忽略TestApplication
和MyApplication
。
可能导致这种情况的原因是什么?提前谢谢!
答案 0 :(得分:1)
我遇到了与robolectric类似的问题,其中测试套件会失败,但单个测试运行正常。事实证明,在运行套件时存在时间问题。尝试添加等待计时器或睡眠,看看它是否有效
答案 1 :(得分:1)
问题的原因似乎是当Eclipse为包或整个项目运行“运行配置”而不是单个测试类时,Robolectric没有使用我的项目的AndroidManifest.xml。
有效的修复方法是使用Robolectric的配置功能来提供清单的位置。见here。
@Config
和属性文件解决方案都适用于我。我更喜欢属性文件,因为它适用于整个项目,而注释必须在每个测试类上。
属性文件应命名为“org.robolectric.Config.properties”,你应该将它放在类路径上(我是通过将文件放在测试项目的源文件夹中来完成的。)
假设您有TestMyProject
包含MyProject
的Robolectric测试,该文件应包含以下内容。 (以下路径相对于TestMyProject
)。
manifest=../MyProject/AndroidManifest.xml