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 @BeforeClass
annotation qui effectue l'initialisation.
Ensuite, j'étends cette classe avec des classes spécifiques dans lesquelles j'ai des @Test
méthodes et aussi des @BeforeClass
mé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 @BeforeClass
mé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) // <-/