如何在kotlintest中使用beforeProject?

时间:2018-10-31 22:21:54

标签: kotlin kotlintest

我已经实现了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进行了尝试。我想念什么吗?

1 个答案:

答案 0 :(得分:0)

ExecutorService必须在发现任何测试之前运行,否则实际上不是在项目之前运行,而是“在执行任何测试之前”(区别可能并不重要在您的使用类中,但KotlinTest保留了区别)。

因此,在添加到测试类的侦听器中重写该方法不会执行任何操作(如您所见)。

因此,您需要将侦听器添加到项目范围的配置beforeProject中。为此,可以将ProjectConfig子类化,然后将其放在特殊的程序包名称中,如下所示:

io.kotlintest.provided包

AbstractProjectConfig

在此处查看完整文档: https://github.com/kotlintest/kotlintest/blob/master/doc/reference.md#project-config