Да, можно надежно запускать методы настройки и сбрасывания до и после любых тестов в тестовом наборе. Позвольте мне показать в коде:
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");
}
}
Так ваш класс Test1 будет выглядеть примерно так:
package com.test;
import org.junit.Test;
public class Test1 {
@Test
public void test1() {
System.out.println("test1");
}
}
... и вы можете себе представить, что Test2 похож. Если вы запускали TestSuite, вы получите:
setting up
test1
test2
tearing down
Таким образом, вы можете увидеть, что установить/рушить работать только до и после всех испытаний, соответственно.
Улов: это работает только в том случае, если вы используете тестовый набор и не выполняете тесты Test1 и Test2 как индивидуальные тесты JUnit. Вы упомянули, что используете maven, и плагин maven surefire любит запускать тесты по отдельности, а не в составе пакета. В этом случае я бы рекомендовал создать суперкласс, который расширяется каждый тестовый класс. Суперкласс затем содержит аннотированные методы @BeforeClass и @AfterClass. Хотя это не так чисто, как выше, я думаю, что это сработает для вас.
Что касается проблемы с неудачными тестами, вы можете установить maven.test.error.ignore, чтобы сборка продолжалась при неудачных тестах. Это не рекомендуется в качестве постоянной практики, но оно должно заставить вас функционировать до тех пор, пока все ваши тесты не пройдут. Более подробно см. Раздел maven surefire documentation.
Для тестов интеграции вы должны использовать [maven-отказоустойчивый плагин] (http://maven.apache.org/surefire/maven-failsafe-plugin/) вместо surefire. Это не пропустит «пост-интеграцию-тест», если тест завершился неудачно. См. Также [эта страница вики] (http://docs.codehaus.org/display/MAVENUSER/Maven+and+Integration+Testing). – 2013-12-23 16:27:47