Sim, é possível executar métodos de configuração e desmontagem de maneira confiável antes e depois de qualquer teste em uma suíte de teste. Deixe-me demonstrar em código:
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");
}
}
Portanto, sua Test1
classe seria algo como:
package com.test;
import org.junit.Test;
public class Test1 {
@Test
public void test1() {
System.out.println("test1");
}
}
... e você pode imaginar que Test2
é semelhante. Se você corresse TestSuite
, obteria:
setting up
test1
test2
tearing down
Portanto, você pode ver que a configuração / desmontagem só é executada antes e depois de todos os testes, respectivamente.
O problema: isso só funciona se você estiver executando o conjunto de testes e não executando Test1 e Test2 como testes JUnit individuais. Você mencionou que está usando o maven, e o plug-in surefire do maven gosta de executar testes individualmente, e não como parte de um pacote. Nesse caso, eu recomendaria criar uma superclasse que cada classe de teste estende. A superclasse então contém os métodos @BeforeClass e @AfterClass anotados. Embora não seja tão limpo quanto o método acima, acho que funcionará para você.
Quanto ao problema com testes com falha, você pode definir maven.test.error.ignore para que a construção continue nos testes que falharam. Isso não é recomendado como uma prática contínua, mas deve fazer você funcionar até que todos os seus testes sejam aprovados. Para obter mais detalhes, consulte a documentação infalível do maven .
post-integration-test
se um teste falhar. Veja também esta página wiki .