Sì, è possibile eseguire in modo affidabile metodi di configurazione e smontaggio prima e dopo qualsiasi test in una suite di test. Fammi dimostrare in codice:
package com.test;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class)
@SuiteClasses({Test1.class, Test2.class})
public class TestSuite {
@BeforeClass
public static void setUp() {
System.out.println("setting up");
}
@AfterClass
public static void tearDown() {
System.out.println("tearing down");
}
}
Quindi la tua Test1
classe sarebbe simile a:
package com.test;
import org.junit.Test;
public class Test1 {
@Test
public void test1() {
System.out.println("test1");
}
}
... e puoi immaginare che sia Test2
simile. Se corri TestSuite
, otterrai:
setting up
test1
test2
tearing down
Quindi puoi vedere che l'impostazione / lo smontaggio vengono eseguiti solo prima e dopo tutti i test, rispettivamente.
Il problema: funziona solo se stai eseguendo la suite di test e non stai eseguendo Test1 e Test2 come singoli test JUnit. Hai detto che stai usando Maven e il plugin Maven infallibile ama eseguire i test individualmente e non fa parte di una suite. In questo caso, consiglierei di creare una superclasse che ogni classe di test estende. La superclasse contiene quindi i metodi @BeforeClass e @AfterClass annotati. Sebbene non sia così pulito come il metodo sopra, penso che funzionerà per te.
Per quanto riguarda il problema con i test falliti, puoi impostare maven.test.error.ignore in modo che la compilazione continui sui test falliti. Questo non è raccomandato come pratica continua, ma dovrebbe farti funzionare finché tutti i tuoi test non saranno superati. Per maggiori dettagli, consulta la documentazione di Maven infallibile .
post-integration-test
se un test fallisce. Vedi anche questa pagina wiki .