Я хочу реализовать параметризованный тест 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;
}