为每个测试场景实例化 Kotlin 单元测试

Kotlin Unit test instantiate for each test scenario

进行单元测试class,其中一些参数在构造中定义

class VersionConsumerSpec {


    private val path = Paths.get("target").toAbsolutePath().toString()
    private val kafkaPort = (4000..8000).random()
    private val zooKeeperPort = (4000..8000).random()
    private val config: AppConfig = createAppConfig(kafkaPort)
    private val producer = createKafkaProducer()

    init {
        println("hello world")
    }

    @ExperimentalCoroutinesApi
    @ObsoleteCoroutinesApi
    @Test
    @DisplayName("test1")
    fun test1() {
    }

    @ExperimentalCoroutinesApi
    @ObsoleteCoroutinesApi
    @Test
    @DisplayName("test2")
    fun test2() {
    }

}

每次测试都会执行定义的所有变量,即使init在这里执行了两次。 然后我遇到了问题,因为我想为所有测试用例声明一次所有这些变量。

我这里出了什么问题?在 Java 或 Scala 中,这不会发生。

就好像对于每个测试 class 都会一次又一次地完全实例化。

我猜您正在寻找 @TestInstance 注释。 PER_CLASS 模式允许每个测试创建一次新的测试实例 class.

@TestInstance(PER_CLASS)
class VersionConsumerSpec {
    ...