Tengo una suite de prueba de integración. Tengo una IntegrationTestBaseclase 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 setUpy tearDownen la clase base finaly luego simplemente agregar nuestros propios métodos @Beforey 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?* }
}
MyTestfalta unextends?