J'ai une classe de base abstraite, que j'utilise comme base pour mes tests unitaires (TestNG 5.10). Dans cette classe, j'initialise tout l'environnement pour mes tests, la configuration des mappages de bases de données, etc. Cette classe abstraite a une méthode avec une @BeforeClassannotation qui effectue l'initialisation.
Ensuite, j'étends cette classe avec des classes spécifiques dans lesquelles j'ai des @Testméthodes et aussi des @BeforeClassméthodes. Ces méthodes effectuent une initialisation spécifique à la classe de l'environnement (par exemple, mettre certains enregistrements dans la base de données).
Comment puis-je appliquer un ordre spécifique des @BeforeClassméthodes annotées? J'ai besoin que ceux de la classe de base abstraite soient exécutés avant ceux de la classe d'extension.
Exemple:
abstract class A {
@BeforeClass
doInitialization() {...}
}
class B extends A {
@BeforeClass
doSpecificInitialization() {...}
@Test
doTests() {...}
}
Commande attendue:
A.doInitialization
B.doSpecificInitialization
B.doTests
Commande réelle:
B.doSpecificInitialization // <- crashes, as the base init is missing
(A.doInitialization // <---not executed
B.doTests) // <-/