0

有一个单元测试类,在构造中定义了一些参数

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 中,这不会发生。

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

4

1 回答 1

1

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

@TestInstance(PER_CLASS)
class VersionConsumerSpec {
    ...
于 2020-11-24T10:22:27.527 回答