Eu tenho uma classe base abstrata, que uso como base para meus testes de unidade (TestNG 5.10). Nesta classe, eu inicializo todo o ambiente para meus testes, configurando mapeamentos de banco de dados, etc. Esta classe abstrata possui um método com uma @BeforeClass
anotação que faz a inicialização.
Em seguida, eu estendo essa classe com classes específicas nas quais tenho @Test
métodos e também @BeforeClass
métodos. Esses métodos fazem a inicialização específica da classe do ambiente (por exemplo, colocar alguns registros no banco de dados).
Como posso impor uma ordem específica dos @BeforeClass
métodos anotados? Preciso que os da classe base abstrata sejam executados antes dos da classe extensível.
Exemplo:
abstract class A {
@BeforeClass
doInitialization() {...}
}
class B extends A {
@BeforeClass
doSpecificInitialization() {...}
@Test
doTests() {...}
}
Pedido esperado:
A.doInitialization
B.doSpecificInitialization
B.doTests
Ordem real:
B.doSpecificInitialization // <- crashes, as the base init is missing
(A.doInitialization // <---not executed
B.doTests) // <-/