Ho una suite di test di integrazione. Ho una IntegrationTestBase
classe per estendere tutti i miei test. Questa classe di base ha un metodo @Before
( public void setUp()
) e @After
( public void tearDown()
) per stabilire connessioni API e DB. Quello che ho fatto è semplicemente ignorare quei due metodi in ogni testcase e chiamare super.setUp()
e super.tearDown()
. Tuttavia, ciò può causare problemi se qualcuno dimentica di chiamare il super o li mette nel posto sbagliato e viene generata un'eccezione e si dimenticano di chiamare super nel finalmente o qualcosa del genere.
Quello che voglio fare è creare i metodi setUp
e tearDown
sulla classe base final
e quindi aggiungere i nostri metodi @Before
e annotati @After
. Effettuando alcuni test iniziali sembra chiamare sempre in questo ordine:
Base @Before
Test @Before
Test
Test @After
Base @After
ma sono solo un po 'preoccupato che l'ordine non sia garantito e che possa causare problemi. Mi sono guardato intorno e non ho visto nulla sull'argomento. Qualcuno sa se posso farlo e non ho problemi?
Codice:
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
manca unaextends
?