Как я могу записать информацию, специфичную для теста, при реализации TestCaseExtension? - PullRequest
0 голосов
/ 05 февраля 2019

В 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)
...