Given the following code:
    public abstract class Base {
      @BeforeAll
      public static void beforeAll() {
        System.out.println("Base::beforeAll");
      }
      @AfterAll
      public static void afterAll() {
        System.out.println("Base::afterAll");
      }
    }
    public class First extends Base {
      @Test
      public void test() {
        System.out.println("First::test");
      }
    }
    public class Second extends Base {
      @Test
      public void test() {
        System.out.println("Second::test");
      }
    }
I would like to have the following execution model:
    Base::beforeAll
    First::test
    Second::test
    Base::afterAll
Instead, I get this:
    Base::beforeAll
    First::test
    Base::afterAll
    Base::beforeAll
    Second::test
    Base::afterAll
I'm aware of BeforeAllCallback and AfterAllCallback, but they simply provide the callback hooks for lifecycle annotations like BeforeAll and AfterAll.
Is there any way you can safely run a setup method in the base class before running all tests in the project and then run some tear down method after running all the test methods in the entire project?
