Да, можно надежно запускать методы настройки и удаления до и после любых тестов в наборе тестов. Позвольте мне продемонстрировать в коде:
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 .
post-integration-test
если тест не пройден. См. Также эту страницу вики .