Ho una classe base astratta, che uso come base per i miei unit test (TestNG 5.10). In questa classe, inizializzo l'intero ambiente per i miei test, configurando i mapping del database, ecc. Questa classe astratta ha un metodo con @BeforeClass
un'annotazione che esegue l'inizializzazione.
Successivamente, estendo quella classe con classi specifiche in cui ho @Test
metodi e anche @BeforeClass
metodi. Questi metodi eseguono l'inizializzazione dell'ambiente specifica della classe (ad esempio, inseriscono alcuni record nel database).
Come posso applicare un ordine specifico dei @BeforeClass
metodi annotati? Ho bisogno che quelli della classe base astratta vengano eseguiti prima di quelli della classe extending.
Esempio:
abstract class A {
@BeforeClass
doInitialization() {...}
}
class B extends A {
@BeforeClass
doSpecificInitialization() {...}
@Test
doTests() {...}
}
Ordine previsto:
A.doInitialization
B.doSpecificInitialization
B.doTests
Ordine effettivo:
B.doSpecificInitialization // <- crashes, as the base init is missing
(A.doInitialization // <---not executed
B.doTests) // <-/