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,但它执行类的反射实例化。有没有更简单的方法呢?
发布于 2019-11-29 11:17:12
在将其传递给覆盖函数之前,您可以保留对扩展/侦听器的引用。
例如:
val myListener = MyKotlinTestListener()
val myOtherListener = MyOtherKotlinTestListener()
override fun listeners() = listOf(myListener, myOtherListener)通过这种方式,您可以使用可用的引用在测试中执行您想要的操作
test("MyTest") {
myListener.executeX()
}如果您正在使用任何类型的扩展,情况也是如此。
它们仍将作为KotlinTest生命周期的一部分执行!
https://stackoverflow.com/questions/59053700
复制相似问题