我正在尝试运行这样的单元测试:
@org.junit.jupiter.api.Test
void junit5codeCoverage() {
final int result = new Foo().junit5();
Assert.assertEquals(Looper.getMainLooper().getThread(), Thread.currentThread());
assertEquals(-1, result);
}
这是使用Robolectric进行Android依赖性(即Looper.getMainLooper()
)的 Junit5 测试。
我正在使用允许在Android设置中运行junit5的junit5 android plugin from mannodermaus。但这不是开箱即用的,因为它不会加载robolectric。所以我尝试alixwar's branch来处理robolectric和junit5测试覆盖率,但仍然不会使用Android类。
我还开始研究如何在junit5上运行robolectric测试,这需要了解RobolectricTestRunner
如何工作以及如何将代码移植到JUnit5平台。我对新的junit5平台了解不多,但我发现我可以构建在org.junit.platform.runner.JUnitPlatform
运行程序之上,以遵循测试运行程序概念,它是junit-platform-runner
程序包的一部分。但这远离原始的Junit4 SandBoxTestRunner
,我无法完成端口。
那么实现robolectric junit5支持的最可行途径是什么,或者我缺少任何(明显的)概念?
答案 0 :(得分:1)
我也在尝试这样做,但是在撰写本文时,Robolectric似乎根本不支持junit5。
在此处查看讨论:https://github.com/robolectric/robolectric/issues/2996
在该讨论中描述了一些解决方法,但是现在我只继续使用junit4。
答案 1 :(得分:0)
您可以使用 junit-vintage-engine
使用 JUnit4 中的运行程序运行测试。
只需将 org.junit.vintage:junit-vintage-engine
添加到您的依赖项中,这样您就可以为您的测试添加 org.junit.runner.RunWith
注释。