1

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 但它会反射类的实例化。有什么方法可以更轻松吗?

4

1 回答 1

0

您可以在将扩展/侦听器传递给覆盖函数之前保留对它的引用。

例如:

val myListener = MyKotlinTestListener()
val myOtherListener = MyOtherKotlinTestListener()


override fun listeners() = listOf(myListener, myOtherListener)

这样你就可以在你的测试中做你想做的事情了

test("MyTest") {
    myListener.executeX()
}

如果您使用任何类型的扩展,也是如此。

它们仍将作为 KotlinTest 生命周期的一部分执行!

于 2019-11-29T03:17:11.540 回答