¿Cómo puedo inicializar la variable antes de cada testing usando el marco kotlin-test

Estoy tratando de encontrar una forma de configurar la variable antes de cada testing. Al igual que el método @Before en Junit. Revise el documento de kotlin-test y descubro que puedo usar la interfaz interceptTestCase (). Pero desafortunadamente, el siguiente código activará la exception:

kotlin.UninitializedPropertyAccessException: lateinit property text has not been initialized

 class KotlinTest: StringSpec() { lateinit var text:String init { "I hope variable is be initialized before each test" { text shouldEqual "ABC" } "I hope variable is be initialized before each test 2" { text shouldEqual "ABC" } } override fun interceptTestCase(context: TestCaseContext, test: () -> Unit) { println("interceptTestCase()") this.text = "ABC" test() } } 

¿Estoy en el path equivocado para usar interceptTestCase ()? Muchas gracias ~

No has inicializado la variable de text . init se llama primero cuando creas un object para una class.

Usted está llamando al text shouldEqual "ABC" en el bloque de init en su código, esa vez no habrá ningún valor en una variable de text .

Su function interceptTestCase(context: TestCaseContext, test: () -> Unit) solo se puede llamar después del bloque de init .

Inicialice el text en el propio constructor como el código siguiente, para que no obtenga este error o haga alguna alternativa.

 class KotlinTest(private val text: String): StringSpec() 

Una solución rápida es agregar la statement siguiente en el caso de testing:
override val oneInstancePerTest = false

La causa principal es que oneInstancePerTest es verdadero por defecto (aunque es falso en kotlin test doc), lo que significa que cada escenario de testing se ejecutará en las diferentes instancias.

En el caso en cuestión, el método de initialization interceptTestCase se ejecutó en la instancia A , estableció el text en ABC . Luego, el caso de testing se ejecutó en la instancia B sin interceptTestCase .

Para get más detalles, hay un problema abierto en GitHub:
https://github.com/kotlintest/kotlintest/issues/174