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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With