Tak, możliwe jest niezawodne uruchamianie metod konfiguracji i usuwania metod przed i po testach w zestawie testów. Pokażę w kodzie:
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");
}
}
Twoja Test1
klasa wyglądałaby mniej więcej tak:
package com.test;
import org.junit.Test;
public class Test1 {
@Test
public void test1() {
System.out.println("test1");
}
}
... i możesz sobie wyobrazić, że Test2
wygląda podobnie. Gdybyś biegał TestSuite
, dostałbyś:
setting up
test1
test2
tearing down
Możesz więc zobaczyć, że konfiguracja / zrywanie działa tylko odpowiednio przed i po wszystkich testach.
Haczyk: działa to tylko wtedy, gdy uruchamiasz zestaw testów i nie uruchamiasz Test1 i Test2 jako oddzielnych testów JUnit. Wspomniałeś, że używasz mavena, a wtyczka Maven surefire lubi uruchamiać testy indywidualnie, a nie jako część pakietu. W tym przypadku zalecałbym utworzenie nadklasy, którą rozszerza każda klasa testowa. Nadklasa zawiera następnie metody @BeforeClass i @AfterClass z adnotacjami. Chociaż nie jest tak czysta jak powyższa metoda, myślę, że będzie działać dla Ciebie.
Jeśli chodzi o problem z nieudanymi testami, możesz ustawić maven.test.error.ignore tak, aby kompilacja była kontynuowana po nieudanych testach. Nie jest to zalecane jako ciągła praktyka, ale powinno zapewnić ci funkcjonowanie, dopóki wszystkie testy nie przejdą. Więcej szczegółów można znaleźć w dokumentacji Maven surefire .
post-integration-test
jeśli test się nie powiedzie. Zobacz także tę stronę wiki .