Я не уверен, что это возможно, но мне нужно вызвать разные методы @Before в зависимости от тестов. Возможно ли сделать для этого какой-то резольвер?
@Before
performBeforeOne();
@Before
performBeforeTwo();
@Test
callBeforeOneAndExecuteTestOne();
@Test
callBeforeTwoAndExecuteTestTwo();
Или мне нужно просто создать несколько методов и вызвать их вручную из каждого теста?
Нет, вы можете использовать только один метод с каждой аннотацией жизненного цикла. Создайте композитный метод, который вызывает другие, если они слишком велики для объединения.
Я думаю, что лучший способ достичь этого (и самого ясного) - реорганизовать ваши тесты как таковые:
@Before
public void performBeforeForAll() {}
@Test
testOne() {
testOneBefore();
//.. test execution
}
@Test
testTwo() {
testTwoBefore();
//.. test execution
}
private void testOneBefore() {}
private void testTwoBefore() {}
Таким образом, вы можете точно определить, что настроит каждый тест до его запуска. Вероятно, вы обнаружите, что в некоторых тестах используется один и тот же установочный код, в котором у вас может быть закрытый метод, чтобы предотвратить дублирование.