超类中的@BeforeAll不执行

use*_*794 4 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
    }

}
Run Code Online (Sandbox Code Playgroud)

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

tyn*_*ynn 6

文档明确指出

@BeforeAll只要方法未被隐藏重写,就可以从超类继承。此外,@BeforeAll超类中的方法将在子类中的方法之前执行@BeforeAll

所以这不是理想的行为。但既然setStatus()open,你必须小心不要覆盖它。