JUnit 5 AfterAll 未在 Kotlin 上执行
JUnit 5 AfterAll not executed on Kotlin
如果我 运行 下面的 SubClass
单元,我希望 @AfterAll
在测试后执行。然而,输出只是这样:
init in super class
init in sub class
test OK
我不明白为什么 SuperClass#stop()
没有被调用。我知道 @AfterAll
需要一个静态方法或 Lifecycle.PER_CLASS
但这是给定的。
超级class
import org.junit.jupiter.api.AfterAll
import org.junit.jupiter.api.TestInstance
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
open class SuperClass {
init {
println("init in super class")
}
@AfterAll
fun stop(){
println("service stopped")
}
}
子class
import org.junit.Test
open class SubClass : SuperClass() {
init {
println("init in sub class")
}
@Test
fun shouldRun() {
println("test OK")
}
}
使用org.junit.jupiter.api.Test
instead of org.junit.Test
in your JUnit5-tests (check also JUnit 5 User Guide - Annotations).
以下将按预期工作:
import org.junit.jupiter.api.Test
open class SubClass : SuperClass() {
init {
println("init in sub class")
}
@Test
fun shouldRun() {
println("test OK")
}
}
如果我 运行 下面的 SubClass
单元,我希望 @AfterAll
在测试后执行。然而,输出只是这样:
init in super class
init in sub class
test OK
我不明白为什么 SuperClass#stop()
没有被调用。我知道 @AfterAll
需要一个静态方法或 Lifecycle.PER_CLASS
但这是给定的。
超级class
import org.junit.jupiter.api.AfterAll
import org.junit.jupiter.api.TestInstance
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
open class SuperClass {
init {
println("init in super class")
}
@AfterAll
fun stop(){
println("service stopped")
}
}
子class
import org.junit.Test
open class SubClass : SuperClass() {
init {
println("init in sub class")
}
@Test
fun shouldRun() {
println("test OK")
}
}
使用org.junit.jupiter.api.Test
instead of org.junit.Test
in your JUnit5-tests (check also JUnit 5 User Guide - Annotations).
以下将按预期工作:
import org.junit.jupiter.api.Test
open class SubClass : SuperClass() {
init {
println("init in sub class")
}
@Test
fun shouldRun() {
println("test OK")
}
}