JUnit 5具有简洁的扩展功能,即使它在JUnit框架上运行,它也与kotlintest不兼容。 TestListener
可以处理仅需要记录某些内容的简单用例,但我们无法处理更高级的用例。特别是如何与扩展交互?理想情况下,我想保留该扩展名,以便查询它。
在JUnit5中,它将是(无论如何是一种选择)
@ExtendWith(MyExtension.class)
class Something() {
@MyAnnotation
MyType myType;
@Test
void doSomething() {
myType.doSomething();
}
}
在JUnit4中,它将更加简单
@Rule
MyRule myRule;
@Test
void fun() {
myRule.something();
}
当然,有一个SpringExtension,但是它执行类的反射实例化。 有什么方法可以使它更容易吗?
答案 0 :(得分:0)
在将扩展名/侦听器传递给替代功能之前,您可以保留对其的引用。
例如:
val myListener = MyKotlinTestListener()
val myOtherListener = MyOtherKotlinTestListener()
override fun listeners() = listOf(myListener, myOtherListener)
通过这种方式,您可以在参考可用的情况下完成测试中想要做的事情
test("MyTest") {
myListener.executeX()
}
如果您使用任何扩展名,也是如此。
它们仍将作为KotlinTest生命周期的一部分执行!