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