Oui, il est possible d'exécuter de manière fiable des méthodes de configuration et de suppression avant et après les tests d'une suite de tests. Laissez-moi vous démontrer dans le code:
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");
}
}
Donc, votre Test1
classe ressemblerait à quelque chose comme:
package com.test;
import org.junit.Test;
public class Test1 {
@Test
public void test1() {
System.out.println("test1");
}
}
... et vous pouvez imaginer que cela Test2
semble similaire. Si vous couriez TestSuite
, vous obtiendrez:
setting up
test1
test2
tearing down
Ainsi, vous pouvez voir que la configuration / la suppression ne s'exécutent qu'avant et après tous les tests, respectivement.
Le hic: cela ne fonctionne que si vous exécutez la suite de tests et que vous n'exécutez pas Test1 et Test2 en tant que tests JUnit individuels. Vous avez mentionné que vous utilisiez maven, et le plugin maven surefire aime exécuter des tests individuellement et ne fait pas partie d'une suite. Dans ce cas, je recommanderais de créer une superclasse que chaque classe de test étend. La superclasse contient alors les méthodes annotées @BeforeClass et @AfterClass. Bien que pas aussi propre que la méthode ci-dessus, je pense que cela fonctionnera pour vous.
En ce qui concerne le problème des tests ayant échoué, vous pouvez définir maven.test.error.ignore afin que la compilation continue en cas d'échec des tests. Ce n'est pas recommandé comme pratique continue, mais cela devrait vous permettre de fonctionner jusqu'à ce que tous vos tests réussissent. Pour plus de détails, consultez la documentation maven surefire .
post-integration-test
si un test échoue. Voir aussi cette page wiki .