【问题标题】:Robolectric ignores custom and test application class when running more than one test运行多个测试时,Robolectric 会忽略自定义和测试应用程序类
【发布时间】:2013-12-28 22:11:22
【问题描述】:
对于 Android 应用,我有 Robolectric 单元测试。我从 Eclipse 运行它们。
我正在使用 Robolectric 提供替换 Application 类供 Robolectric 使用的功能。这个类,叫它TestApplication,扩展了我的应用程序类,叫它MyApplication,它扩展了Android Application 类。
我发现,当我运行单个测试用例时,Robolectric 会按预期使用替代应用程序类。但是,如果我为项目中的所有测试创建运行配置,Robolectric 将恢复使用 Android Application 类。它忽略了TestApplication 和MyApplication。
这可能是什么原因造成的?提前致谢!
【问题讨论】:
标签:
android
eclipse
unit-testing
robolectric
【解决方案1】:
我遇到了与 robolectric 类似的问题,其中测试套件会失败,但单个测试会运行良好。事实证明,运行该套件时存在时间问题。尝试添加等待计时器或睡眠,看看是否有效
【解决方案2】:
问题的原因似乎是当 Eclipse 为一个包或整个项目而不是单个测试类运行“运行配置”时,Robolectric 没有使用我项目的 AndroidManifest.xml。
一个可行的解决方法是使用 Robolectric 的配置功能来提供清单的位置。见here。
@Config 和属性文件解决方案都对我有用。我更喜欢属性文件,因为它适用于整个项目,而注释必须在每个测试类上。
属性文件应该命名为“org.robolectric.Config.properties”,你应该把它放在你的类路径中(我把文件放在测试项目的源文件夹中)。
假设您有一个包含 MyProject 的 Robolectric 测试的 TestMyProject,该文件应包含以下内容。 (下面的路径是相对于TestMyProject)。
manifest=../MyProject/AndroidManifest.xml