J'ai une suite de tests d'intégration. J'ai une IntegrationTestBase
pour que tous mes tests soient étendus. Cette classe de base a un @Before
( public void setUp()
) et @After
( public void tearDown()
) pour établir les connexions API et DB. Ce que j'ai fait, c'est simplement surcharger ces deux méthodes dans chaque testcase et appeler super.setUp()
y super.tearDown()
. Cependant, cela peut poser des problèmes si quelqu'un oublie d'appeler le super ou le place au mauvais endroit et qu'une exception est levée et qu'il oublie d'appeler le super dans le finally ou autre.
Ce que je veux faire, c'est que le setUp
y tearDown
sur la classe de base final
et ensuite ajouter notre propre annotation @Before
y @After
méthodes. En effectuant quelques tests initiaux, il semble que les appels se fassent toujours dans cet ordre :
Base @Before
Test @Before
Test
Test @After
Base @After
mais je m'inquiète un peu du fait que la commande n'est pas garantie et que cela pourrait poser des problèmes. J'ai cherché et je n'ai rien vu sur le sujet. Quelqu'un sait-il si je peux faire cela et ne pas avoir de problèmes ?
Code :
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?* }
}
1 votes
Est-ce que le
MyTest
il manque unextends
?0 votes
@aioobe : plus maintenant :)