Я пытаюсь написать тестовый класс, который требует использования определенной настройки. Когда есть только 1 настройка, это легко с @BeforeEach:
@BeforeEach public void setup() {
// my setup code
}
@Test public void test1() {
// ...
}
@Test public void test2() {
// ...
}
@Test public void test3() {
// ...
}
Но что я могу сделать, когда есть несколько настроек на выбор? Конечно, я мог бы вообще забыть @BeforeEach и попросить коллег вызвать метод установки, который они хотели бы использовать:
@Test public void test1() {
setupA();
// ...
}
@Test public void test2() {
setupB();
// ...
}
@Test public void test3() {
setupB();
// ...
}
Но это больше не заставляет использовать один измои методы настройки. Есть ли способ реализовать «параметризованный @BeforeEach»? Что-то вроде (составной синтаксис):
enum SetupType {A, B, C};
@BeforeEach public void setup(SetupType setupType) {
switch (setupType) {
case A:
setupA();
break;
case B:
setupB();
break;
case C:
setupC();
break;
default:
fail("Unrecognized setup.");
}
@Test
@BeforeEachParameter(SetupType.A)
public void test1() {
// ...
}
@Test
@BeforeEachParameter(SetupType.B)
public void test2() {
// ...
}
@Test
@BeforeEachParameter(SetupType.B)
public void test3() {
// ...
}
Или, что еще лучше, добавление в аннотацию @Test?
@TestWithSetupA public void test1() {
// ...
}
@TestWithSetupB public void test2() {
public void test2() {
// ...
}
@TestWithSetupB public void test3() {
public void test3() {
// ...
}