Tengo una suite de prueba de integración. Tengo una IntegrationTestBase
clase para extender todas mis pruebas. Esta clase base tiene un método @Before
( public void setUp()
) y @After
( public void tearDown()
) para establecer conexiones API y DB. Lo que he estado haciendo es anular esos dos métodos en cada caso de prueba y llamar super.setUp()
y super.tearDown()
. Sin embargo, esto puede causar problemas si alguien olvida llamar al súper o los coloca en el lugar equivocado y se produce una excepción y se olvida de llamar al súper finalmente o algo así.
Lo que quiero hacer es crear los métodos setUp
y tearDown
en la clase base final
y luego simplemente agregar nuestros propios métodos @Before
y anotados @After
. Al hacer algunas pruebas iniciales, parece que siempre se llama en este orden:
Base @Before
Test @Before
Test
Test @After
Base @After
pero me preocupa un poco que el pedido no esté garantizado y que pueda causar problemas. Miré a mi alrededor y no he visto nada sobre el tema. ¿Alguien sabe si puedo hacer eso y no tengo ningún problema?
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
falta unextends
?