JUnit 5 AfterAll不在Kotlin上执行

时间:2018-08-22 10:42:38

标签: junit kotlin junit5

如果我在下面运行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")
    }
}

1 个答案:

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