Home > database >  Why methods annotated with @BeforeAll and @AfterAll should be static in JUnit 5?
Why methods annotated with @BeforeAll and @AfterAll should be static in JUnit 5?

Time:08-14

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.

  • Related