Высокий уровень, у меня есть класс тестирования JUnit, который довольно прост. У меня есть несколько @Tests и один @Before, который делает некоторые настройки. Для одного тестового примера настройка меняется (я не хочу, чтобы она запускалась).Пропустить @Before для теста || Есть ли способ выполнить методы @Before в TestRule?
Из поиска найдено https://stackoverflow.com/a/13017452/413254. Это предполагает создание @Rule, который проверяет конкретную аннотацию и выполняет оператор @Before.
Мое замешательство заключается в том, как выполнить метод @Before в правиле. Есть ли способ сделать это? Или мне нужно пройти в самом тестовом классе и выполнить метод @before (setup()
в примере ниже)?
public class NoBeforeRule implements TestRule {
@Override
public Statement apply(final Statement base, final Description description) {
return new Statement() {
@Override
public void evaluate() throws Throwable {
if (description.getAnnotation(NoBefore.class) == null) {
// Is there something like `base.executeAllTheBefores()'
}
base.evaluate();
}
};
}
}
Соответствующий код теста:
@Rule public NoBeforeRule mNoBeforeRule = new NoBeforeRule(this);
@Before
@Override
public void setup() {
}
@Test
public void testNeedSetup() {
// this should run setup()
}
@NoBefore
@Test
public void testNoSetup() {
// this should NOT run setup()
}