@RunWith(JUnitParamsRunner.class)
public class MySimpleTest {
private MyRec rec;
private Matrix matrix;
@Before
public void createRecognizerBeforeEveryExecution() {
rec = new MyRec();
matrix = MatrixUtils.createMatrixWithValues();
}
public static Iterable<Object[]> data() {
return Arrays.asList(
new Object[]{"expectedvalue1", "input1"},
new Object[]{"expectedvalue2", "input2"}
);
}
@Test
@Parameters(method = "data")
public void test1(String output, String input) {
rec.fun1(matrix);
assertEquals(output, rec.someFunction(input));
}
public static Iterable<Object[]> data2() {
return Arrays.asList(
new Object[]{"expectedothervalue1", "input1"},
new Object[]{"expectedothervalue2", "input2"}
);
}
@Test
@Parameters(method = "data2")
public void test2(String output, String input) {
rec.fun1(matrix);
rec.fun2(matrix);
assertEquals(output, rec.someFunction(input));
}
}
Я пытаюсь выяснить, что является правильным способом проведения этого теста. Я бы хотел использовать параметризованный тест, потому что это действительно удобный способ.JUnitParams - выполнение отдельных методов перед испытанием
Как вы можете видеть, в каждой тестовой функции я вызываю некоторую функцию (fun1
и fun2
). Но мне нужно вызвать его только один раз для каждого теста (например, перед каждым параметризованным выполнением теста).
Есть ли способ сообщить JUnitParams, что он должен выполнять другую функцию перед выполнением всех параметризованных тестов?
Я не могу использовать аннотацию @Before
, потому что, как вы можете видеть в test1
, я не использую fun2
. Он думает, что это должно выполняться отдельной функцией.
Если я правильно понял решение 2, я не должен использовать параметризованный тест здесь, но просто произведите некоторые дублированные проверки в одном методе тестирования. Это правильный путь? –
Я предположил, что вы хотите удалить дублирование (методы удовольствия) между тестом, перемещая общий код в другое место (что делает их более сложными IMHO). Ваши @Parameters хороши (вы хотите запускать тестовые примеры на нескольких наборах данных), но это может быть сделано немного simmpler (смотрите редактирование PS) –