Eu tenho um conjunto de testes de integração. Eu tenho uma IntegrationTestBase
aula para todos os meus testes estenderem. Essa classe base possui um método @Before
( public void setUp()
) e @After
( public void tearDown()
) para estabelecer conexões API e DB. O que venho fazendo é substituir esses dois métodos em cada caso de teste e chamar super.setUp()
e super.tearDown()
. No entanto, isso pode causar problemas se alguém esquecer de chamar o super ou colocá-lo no lugar errado e uma exceção for lançada e eles esquecerem de chamar super no finalmente ou algo assim.
O que eu quero fazer é criar os métodos setUp
e tearDown
na classe base final
e, em seguida, basta adicionar nossos próprios métodos @Before
e anotados @After
. Fazendo alguns testes iniciais, parece sempre chamar nesta ordem:
Base @Before
Test @Before
Test
Test @After
Base @After
mas estou um pouco preocupado com o fato de o pedido não ser garantido e de causar problemas. Olhei em volta e não vi nada sobre o assunto. Alguém sabe se eu posso fazer isso e não tenho problemas?
Código:
public class IntegrationTestBase {
@Before
public final void setUp() { *always called 1st?* }
@After
public final void tearDown() { *always called last?* }
}
public class MyTest extends IntegrationTestBase {
@Before
public final void before() { *always called 2nd?* }
@Test
public void test() { *always called 3rd?* }
@After
public final void after() { *always called 4th?* }
}
MyTest
desaparecido é umextends
?