Запустите 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?

Однако я не думаю, что это возможно и ищет меня как функцию калеки.

Другой подход - переместите этот тест на отдельный тестовый класс.