При такой постановке вопроса
Необходимо аннотировать все классы @BeforeClass и @AfterClass, которые будут выполнять свои определённые действия.
Вы сделали все правильно - через наследование.
Проблема в том, что аннотации @BeforeClass и @AfterClass выполняются перед запуском каждого вызванного класса грэдлом.
Это не проблема, это ожидаемая функциональность этих аннотаций.
Если вы хотите чтобы какой-то кусок кода выполнялся один раз перед/после нескольких тесовых классов, можно использовать @SuiteClasses({Test1.class, Test2.class}) (
см. пример на стековерфлоу)