У меня есть базовый базовый класс, который я использую в качестве основы для своих модульных тестов (TestNG 5.10). В этом классе я инициализирую всю среду для своих тестов, настраивая сопоставления баз данных и т.д. Этот абстрактный класс имеет метод с аннотацией @BeforeClass
, который выполняет инициализацию.
Затем я расширяю этот класс с помощью определенных классов, в которых у меня есть методы @Test
, а также методы @BeforeClass
. Эти методы выполняют инициализацию среды, специфичную для класса (например, помещают некоторые записи в базу данных).
Как я могу обеспечить выполнение определенного порядка аннотированных методов @BeforeClass
? Мне нужны те из абстрактного базового класса, который должен быть выполнен до тех, что распространяются в классе.
Пример:
abstract class A {
@BeforeClass
doInitialization() {...}
}
class B extends A {
@BeforeClass
doSpecificInitialization() {...}
@Test
doTests() {...}
}
Ожидаемый заказ:
A.doInitialization
B.doSpecificInitialization
B.doTests
Фактический порядок:
B.doSpecificInitialization // <- crashes, as the base init is missing
(A.doInitialization // <---not executed
B.doTests) // <-/