我想为具有三个输入参数的方法实现参数化 JUnit 测试。我希望测试通过这三个输入参数的所有可能组合的笛卡尔积来运行。为此,我有一个方法,可以生成笛卡尔积并将其存储在 Arraylist 中。如何访问我的测试方法的单个值?我已阅读有关返回参数流的信息,但我想为参数生成值而不是显式地编写它们。
@ParameterizedTest
@MethodSource("generateCartesianProduct")
public void myTest(int x, int y, int z) {
Assertions.assertTrue(methodToTest(
x, y, z));
}
private static whatToReturnHere?? generateCartesianProduct() {
int[] x = {1, 2, 3};
int[] y = {4, 5, 6};
int[] z = {7, 8, 9};
ArrayList<Integer> list = new ArrayList<>();
ArrayList<ArrayList> result = new ArrayList<>();
for (int i = 0; i < x.length; i++) {
for (int j = 0; j < y.length; j++) {
for (int k = 0; k < z.length; k++) {
list = new ArrayList<>();
list.add(x[i]);
list.add(y[j]);
list.add(z[k]);
result.add(list);
}
}
}
return result;
}