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")
  }
}