我已经实现了TestListener
,如下所示:
object IntegrationTest: TestListener {
override fun beforeProject() {
println("integration tests - beforeProject")
}
override fun beforeSpec(description: Description, spec: Spec) {
println("integration tests - beforeSpec")
}
}
并在测试中使用了它
class SimpleTest: StringSpec() {
override fun listeners() = listOf(IntegrationTest)
init {
"it - 1" {
println("it - 1")
}
"it - 2" {
println("it - 2")
}
}
}
问题是integration tests - beforeProject
从未在输出中打印。
结果是:
integration tests - beforeSpec
it - 1
it - 2
我在intellij中使用gradle CLI进行了尝试。我想念什么吗?
答案 0 :(得分:0)
ExecutorService
必须在发现任何测试之前运行,否则实际上不是在项目之前运行,而是“在执行任何测试之前”(区别可能并不重要在您的使用类中,但KotlinTest保留了区别)。
因此,在添加到测试类的侦听器中重写该方法不会执行任何操作(如您所见)。
因此,您需要将侦听器添加到项目范围的配置beforeProject
中。为此,可以将ProjectConfig
子类化,然后将其放在特殊的程序包名称中,如下所示:
io.kotlintest.provided包
AbstractProjectConfig
在此处查看完整文档: https://github.com/kotlintest/kotlintest/blob/master/doc/reference.md#project-config