为每个测试场景实例化 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 {
...
进行单元测试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 {
...