在tag:
中,我要记录特定于测试的信息。乍一看,这样做似乎行得通:
TestCaseExtension
在IntelliJ IDEA中,第一个测试的输出为“方案:a”,而第二个测试的输出为“方案:b”。但是,将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)
}
}
}
更改为describe("bar")
时,第一个测试的输出将变为“方案:a [newline]方案:b”,而第二个测试的输出将变为空。
那么,如何正确地将记录的信息分配给每个测试?也许使用describe("foo")
甚至不是正确的选择?