我实现了一个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。我是不是遗漏了什么?
发布于 2018-11-01 22:14:31
beforeProject必须在发现任何测试之前运行,否则它实际上并不是在项目之前,而是在“任何测试执行之前”(在您的use类中,这种区别可能并不重要,但KotlinTest保持了这种区别)。
因此,在添加到测试类的侦听器中重写该方法不会执行任何操作(正如您已经看到的)。
因此,您需要将侦听器添加到ProjectConfig中,这是项目范围内的配置。为此,您可以对AbstractProjectConfig进行子类化,并将其放入一个特殊的包名,如下所示:
封装io.kotlintest.provided
object ProjectConfig : AbstractProjectConfig() {
// add listeners here
}参见这里的完整文档:https://github.com/kotlintest/kotlintest/blob/master/doc/reference.md#project-config
https://stackoverflow.com/questions/53092761
复制相似问题