Так, можна надійно запустити налаштовані та зруйновані методи до та після будь-яких тестів у наборі тестів. Дозвольте мені продемонструвати в коді:
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
якщо тест не пройде . Дивіться також цю вікі-сторінку .