testing - Kotlintest 扩展为测试提供信息

标签 testing kotlin kotlintest

JUnit 5 有一个简洁的扩展功能,它与 kotlintest 不兼容,即使它运行在 JUnit 框架上。虽然我们只需要记录一些东西的简单用例可以由 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,但它进行类的反射实例化。 有什么方法可以更轻松地做到这一点?

最佳答案

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

例如:

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


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

这样你就可以在你的测试中使用可用的引用做你想做的事

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

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

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

关于testing - Kotlintest 扩展为测试提供信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59053700/

相关文章:

android - Unresolved reference : android build failed with kotlin dsl (reproducible in an empty project)

KotlinTest 的 BehaviorSpec "No runnable methods"与 SpringJUnit4ClassRunner

unit-testing - 我应该继续测试代码还是实现更多功能?

android - 如何在 Android 项目中使用 Kotlin 工作表

oracle - 如何验证空值 - oracle etl 测试?

android - 使用 mockk 匹配任何可变参数

kotlin - kotlintest项目有一个样本结构

maven - 在Maven中运行Kotlintest

java - 如果变量是私有(private)的,如何测试它是延迟加载的?

java - 我如何在 JMockit 中期望和验证相同的方法