@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));
}
}
我正在尝试找出进行此测试的正确方法。我想使用参数化测试,因为它真的很方便。
如您所见,在每个测试函数中,我都会调用一些函数(fun1
和fun2
)。但是我每次测试只需要调用一次(例如在每次参数化测试执行之前)。
有没有办法告诉 JUnitParams 在执行所有参数化测试之前它应该执行其他功能?
我不能使用@Before
注释,因为你可以在test1
我没有使用fun2
. 它认为它应该由单独的函数执行。