我知道用@BeforeAll
和@AfterAll
注释的方法JUnit 5应该是static
,除非使用TestInstance.Lifecycle.PER_CLASS
。
我不能理解的是为什么JUnit 5会施加这样的限制?如果允许使用PER_CLASS
生命周期,那么在使用PER_METHOD
时会发生什么变化?
提前谢谢。
使用PER_METHOD
时,会为每个测试方法创建一个新的测试类实例。在创建任何实例之前,都需要调用用@BeforeAll
注释的方法。同样,@AfterAll
需要在所有测试完成后调用,因此不再有实例可用。缺少实例意味着这些方法需要是静态的。