Tengo una clase base abstracta, que uso como base para mis pruebas unitarias (TestNG 5.10). En esta clase, inicializo todo el entorno para mis pruebas, configurando mapeos de base de datos, etc. Esta clase abstracta tiene un método con una @BeforeClass
anotación que hace la inicialización.
A continuación, extiendo esa clase con clases específicas en las que tengo @Test
métodos y también @BeforeClass
métodos. Estos métodos realizan la inicialización del entorno específica de la clase (por ejemplo, colocan algunos registros en la base de datos).
¿Cómo puedo hacer cumplir un orden específico de los @BeforeClass
métodos anotados? Necesito que los de la clase base abstracta se ejecuten antes que los de la clase extensible.
Ejemplo:
abstract class A {
@BeforeClass
doInitialization() {...}
}
class B extends A {
@BeforeClass
doSpecificInitialization() {...}
@Test
doTests() {...}
}
Orden esperada:
A.doInitialization
B.doSpecificInitialization
B.doTests
Orden real:
B.doSpecificInitialization // <- crashes, as the base init is missing
(A.doInitialization // <---not executed
B.doTests) // <-/