如果我在下面运行SubClass
单元,我希望在测试后执行@AfterAll
。然而,输出就是这样:
init in super class
init in sub class
test OK
我不明白为什么未调用SuperClass#stop()
。我了解@AfterAll
需要静态方法或Lifecycle.PER_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")
}
}
子类
import org.junit.Test
open class SubClass : SuperClass() {
init {
println("init in sub class")
}
@Test
fun shouldRun() {
println("test OK")
}
}
答案 0 :(得分:3)
在您的JUnit5测试中使用org.junit.jupiter.api.Test
代替org.junit.Test
(也请检查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")
}
}