为什么用 @BeforeAll 和 @AfterAll 注解的方法在 JUnit 5 中应该是静态的?

zer*_*_ik 2 java junit static junit5

我知道使用JUnit 5 注释@BeforeAll进行注释的方法@AfterAll应该是staticexcept 。TestInstance.Lifecycle.PER_CLASS

我不明白的是为什么JUnit 5 施加这样的限制?如果生命周期允许PER_CLASS,那么使用时会发生什么巨大变化PER_METHOD

提前致谢。

Rob*_*oor 6

当您使用 时PER_METHOD,将为每个测试方法创建测试类的新实例。注释的方法@BeforeAll需要在创建任何实例之前调用。同样,@AfterAll需要在所有测试完成后调用,因此不再有可用的实例。缺乏实例意味着这些方法需要是静态的。