超级中的@BeforeAll未执行

时间:2018-04-11 14:24:56

标签: junit kotlin junit5

在超类中,使用@BeforeClass注释的方法似乎不会被执行

    @TestInstance(TestInstance.Lifecycle.PER_CLASS)
open class TestBase {

    var status: Boolean = false

    @BeforeAll
    open fun setStatus() {
        status = true
    }
}

class MyAppTest : TestBase() {

    @Test
    fun testStatus() {
        assertTrue(status) //fails
    }

}

这是理想的行为还是我做错了什么?

1 个答案:

答案 0 :(得分:2)

documentation明确指出:

  

@BeforeAll方法从超类继承,只要它们不是隐藏重写即可。此外,超类中的@BeforeAll方法将在子类中的@BeforeAll方法之前执行。

所以这不是理想的行为。但由于setStatus() 打开,您必须小心不要覆盖