1

在 aTestCaseExtension中,我想记录特定于测试的信息。乍一看,这样做似乎可行:

import io.kotlintest.*
import io.kotlintest.extensions.SpecLevelExtension
import io.kotlintest.extensions.TestCaseExtension
import io.kotlintest.specs.DescribeSpec

class MySpec : DescribeSpec({
    describe("bar") {
        it("a") {}
        it("b") {}
    }
}) {
    override fun extensions(): List<SpecLevelExtension> = listOf(MyExtension())
}

class MyExtension : TestCaseExtension {

    override suspend fun intercept(
        testCase: TestCase,
        execute: suspend (TestCase, suspend (TestResult) -> Unit) -> Unit,
        complete: suspend (TestResult) -> Unit
    ) {
        execute(testCase) { testResult ->
            if (testCase.type == TestType.Test) {
                println(testCase.description.name)
            }
            complete(testResult)
        }
    }
}

在 IntelliJ IDEA 中,第一个测试的输出是“场景:a”,第二个测试的输出是“场景:b”。但是,当更改describe("bar")为时describe("foo"),第一个测试的输出变为“Scenario: a[newline]Scenario: b”,而第二个测试的输出变为空。

那么,如何正确地将记录的信息分配给每个测试?也许使用println甚至不是正确的选择?


  • io.kotlintest:kotlintest-runner-junit5:3.2.1
  • JDK 10.0.2
  • IntelliJ IDEA 2018.3.2(社区版)
4

0 回答 0