Eu tenho um conjunto de testes de integração. Eu tenho uma IntegrationTestBaseaula 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 setUpe tearDownna classe base finale, em seguida, basta adicionar nossos próprios métodos @Beforee 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?* }
}
MyTestdesaparecido é umextends?