在 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(社区版)