В TestCaseExtension
я хочу записать информацию, специфичную для теста.На первый взгляд кажется, что это работает следующим образом:
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")
вывод для первого теста становится «Сценарий: a [newline] Сценарий: b», а вывод для второго теста становится пустым.
Итак, какя могу правильно назначить зарегистрированную информацию каждому тесту?Может быть, использование println
даже не правильный выбор?
- io.kotlintest: kotlintest-runner-junit5: 3.2.1
- JDK 10.0.2
- IntelliJ IDEA 2018.3.2 (Community Edition)