我正在尝试运行这样的单元测试:
@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 测试。我使用的junit5 android plugin from mannodermaus允许在Android设置中运行junit5。但这开箱即用,因为它不会加载robolectric。因此,我尝试了alixwar's branch来解决robolectric和junit5测试覆盖问题,但仍然不会使用Android类。
此外,我开始研究如何在junit5上运行自动测试,这需要了解
RobolectricTestRunner
的工作方式以及如何将代码移植到JUnit5平台。我对新的junit5平台了解甚少,但我发现我可以在org.junit.platform.runner.JUnitPlatform
运行器的基础上构建,以遵循junit-platform-runner
包中的测试运行器概念。但这与原始的Junit4 SandBoxTestRunner
相距太远,以至于我无法完成该端口。那么实现robolectric junit5支持的最可行途径是什么,或者我缺少任何(显而易见的)概念?
最佳答案
我也尝试这样做,但是在撰写本文时,Robolectric似乎根本不支持junit5。
请参阅此处的讨论:https://github.com/robolectric/robolectric/issues/2996
在该讨论中描述了一些解决方法,但是现在我只继续使用junit4。