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.
