Тестирование Junit Jmock: несколько @Before для тестов

1

Я не уверен, что это возможно, но мне нужно вызвать разные методы @Before в зависимости от тестов. Возможно ли сделать для этого какой-то резольвер?

@Before
performBeforeOne();

@Before
performBeforeTwo();

@Test
callBeforeOneAndExecuteTestOne();

@Test
callBeforeTwoAndExecuteTestTwo();

Или мне нужно просто создать несколько методов и вызвать их вручную из каждого теста?

Теги:
junit
jmock

2 ответа

1
Лучший ответ

Нет, вы можете использовать только один метод с каждой аннотацией жизненного цикла. Создайте композитный метод, который вызывает другие, если они слишком велики для объединения.

  • 1
    Вы можете иметь несколько методов @Before. Вы просто не можете гарантировать порядок их запуска.
  • 0
    Спасибо, я забыл, что нет порядка :(.
0

Я думаю, что лучший способ достичь этого (и самого ясного) - реорганизовать ваши тесты как таковые:

@Before
public void performBeforeForAll() {}

@Test
testOne() {
    testOneBefore();
   //.. test execution
}

@Test
testTwo() {
   testTwoBefore();
   //.. test execution
}

private void testOneBefore() {}

private void testTwoBefore() {}

Таким образом, вы можете точно определить, что настроит каждый тест до его запуска. Вероятно, вы обнаружите, что в некоторых тестах используется один и тот же установочный код, в котором у вас может быть закрытый метод, чтобы предотвратить дублирование.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню