Запустите Junit @Test, который игнорирует @Before/@After
Можно ли запустить метод JUnit @Test
в классе, который имеет метод, аннотированный с помощью @Before
, но игнорировать метод @Before
только для этого теста?
Изменить: Мне интересно, поддерживает ли JUnit эту функциональность, а не обходные пути. Мне известны обходные пути, например, перенос теста (ов) в другой класс или удаление аннотации и вызов вручную setUp()
в каждом тестовом методе.
Предположим, что в классе 30 тестов, и для 29 из них @Before
действительно упрощает инициализацию тестирования, но для одного (или более одного) из них бесполезно/это усложняет вещи.
public class MyTestClass {
@Before
public void setUp() {
//setup logic
}
@Test
public void test1() {
//[...]
}
@Test
public void test2() {
//[...]
}
//more tests here
@Test(ignoreBefore = true, ignoreAfter = true //false by default)
//something equivalent to this
public void test20() {
//[...]
}
}
Ответы
Ответ 1
Вы можете сделать это с помощью TestRule. См. Мой ответ на Исключить индивидуальный тест из метода "before" в JUnit. В принципе, внесите ExternalResource, а в методе apply проверьте, есть ли конкретная аннотация для метода, а если есть, 't запустить метод before/after. Вы должны будете специально называть до/после вашего правила, хотя.
Ответ 2
Если это бесполезно, это не должно быть проблемой - еще раз вредно запустить setUp?
Однако я не думаю, что это возможно и ищет меня как функцию калеки.
Другой подход - переместите этот тест на отдельный тестовый класс.