У меня есть абстрактный базовый класс, который я использую в качестве основы для своих модульных тестов (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) // <-/