Sí, es posible ejecutar de manera confiable métodos de instalación y desmontaje antes y después de cualquier prueba en un conjunto de pruebas. Déjame 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");
}
}
Entonces tu Test1
clase se vería así:
package com.test;
import org.junit.Test;
public class Test1 {
@Test
public void test1() {
System.out.println("test1");
}
}
... y puedes imaginar que se Test2
ve similar. Si corriera TestSuite
, obtendría:
setting up
test1
test2
tearing down
Por lo tanto, puede ver que la configuración / desmontaje solo se ejecuta antes y después de todas las pruebas, respectivamente.
El truco: esto solo funciona si está ejecutando el conjunto de pruebas y no está ejecutando Test1 y Test2 como pruebas JUnit individuales. Mencionaste que estás usando maven, y al complemento seguro de maven le gusta ejecutar pruebas de forma individual y no como parte de una suite. En este caso, recomendaría crear una superclase que amplíe cada clase de prueba. La superclase contiene los métodos @BeforeClass y @AfterClass anotados. Aunque no es tan limpio como el método anterior, creo que funcionará para usted.
En cuanto al problema con las pruebas fallidas, puede configurar 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 ayudarlo a funcionar hasta que todas sus pruebas pasen. Para obtener más detalles, consulte la documentación segura de maven .
post-integration-test
si falla una prueba. Consulte también esta página wiki .