【发布时间】:2018-04-08 19:47:09
【问题描述】:
我正在尝试运行这样的单元测试:
@org.junit.jupiter.api.Test
void junit5codeCoverage() {
final int result = new Foo().junit5();
Assert.assertEquals(Looper.getMainLooper().getThread(), Thread.currentThread());
assertEquals(-1, result);
}
这是一个 Junit5 测试,带有 Android 依赖项(即 Looper.getMainLooper())和 Robolectric。
我正在使用junit5 android plugin from mannodermaus,它允许在 Android 设置中运行 junit5。但这不能开箱即用,因为它不会加载 robolectric。所以我尝试了alixwar's branch,它可以解决 robolectric 和 junit5 测试覆盖率问题,但仍然不会使用 Android 类。
我还开始研究如何在 junit5 上运行 robolectric 测试,这需要了解 RobolectricTestRunner 的工作原理以及如何将代码移植到 JUnit5 平台。我对新的 junit5 平台知之甚少,但我发现我可以在 org.junit.platform.runner.JUnitPlatform 运行器之上构建,以遵循测试运行器概念,它是 junit-platform-runner 包的一部分。但这与原来的 Junit4 SandBoxTestRunner 相差甚远,我无法完成移植。
那么实现 robolectric junit5 支持的最可行途径是什么,或者我是否缺少任何(明显的)概念?
【问题讨论】:
标签: android junit robolectric junit5 robolectric-gradle-plugin