Sí, es posible ejecutar de manera confiable los métodos de configuración y desmontaje antes y después de cualquier prueba en un banco de pruebas. Permítanme demostrar en 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");
}
}
Por lo que su clase Prueba1 sería algo como:
package com.test;
import org.junit.Test;
public class Test1 {
@Test
public void test1() {
System.out.println("test1");
}
}
... y se puede imaginar que Prueba2 tiene una apariencia similar. Si ejecutó TestSuite, se llega a:
setting up
test1
test2
tearing down
Así se puede ver que la puesta en marcha/derribe sólo se ejecutan antes y después de todas las pruebas, respectivamente.
El truco: esto solo funciona si está ejecutando el conjunto de pruebas, y no ejecuta Test1 y Test2 como pruebas JUnit individuales. Mencionaste que estás usando maven, y al plugin maven surefire le gusta realizar pruebas individualmente, y no formar parte de una suite. En este caso, recomendaría crear una superclase que extienda cada clase de prueba. La superclase contiene los métodos anotados @BeforeClass y @AfterClass. Aunque no es tan limpio como el método anterior, creo que funcionará para usted.
En cuanto al problema con las pruebas fallidas, puede establecer maven.test.error.ignore para que la compilación continúe en las pruebas fallidas. Esto no se recomienda como una práctica continua, pero debería hacerlo funcionar hasta que todas sus pruebas pasen. Para obtener más detalles, consulte maven surefire documentation.
Para las pruebas de integración, debe usar [maven-failsafe-plugin] (http://maven.apache.org/surefire/maven-failsafe-plugin/) en lugar de surefire. Esto no omitirá 'post-integration-test' si falla una prueba. Ver también [esta página wiki] (http://docs.codehaus.org/display/MAVENUSER/Maven+and+Integration+Testing). –