Mam abstrakcyjną klasę bazową, której używam jako bazy dla moich testów jednostkowych (TestNG 5.10). W tej klasie inicjalizuję całe środowisko dla moich testów, konfiguruję mapowania bazy danych itp. Ta abstrakcyjna klasa posiada metodę z @BeforeClass
adnotacją, która wykonuje inicjalizację.
Następnie rozszerzam tę klasę o konkretne klasy, w których mam @Test
metody, a także @BeforeClass
metody. Metody te wykonują specyficzną dla klasy inicjalizację środowiska (np. Umieszczają niektóre rekordy w bazie danych).
Jak mogę wymusić określoną kolejność @BeforeClass
metod z adnotacjami? Potrzebuję, aby te z abstrakcyjnej klasy bazowej były wykonywane przed tymi z klasy rozszerzającej.
Przykład:
abstract class A {
@BeforeClass
doInitialization() {...}
}
class B extends A {
@BeforeClass
doSpecificInitialization() {...}
@Test
doTests() {...}
}
Oczekiwane zamówienie:
A.doInitialization
B.doSpecificInitialization
B.doTests
Rzeczywiste zamówienie:
B.doSpecificInitialization // <- crashes, as the base init is missing
(A.doInitialization // <---not executed
B.doTests) // <-/