I know that methods annotated with @BeforeAll
and @AfterAll
JUnit 5 annotations should be static
unless TestInstance.Lifecycle.PER_CLASS
is used.
What I can't understand is why JUnit 5 imposes such limitations? If it is allowed with PER_CLASS
lifecycle, what changes drastically when using PER_METHOD
?
Thanks in advance.
CodePudding user response:
When you use PER_METHOD
, a new instance of the test class is created for each test method. Methods annotated with @BeforeAll
would need to be called before any instance is created. Likewise, @AfterAll
needs to be called after all tests are done, and therefore no instance is available anymore. That lack of instances means these methods need to be static.