Не ясно, какой тип проверки вы делаете или как вы изменяете
ваши массивы, но это может быть возможно:
Это должно игнорировать все возвращаемые значения null
и возвращать только
first successful
результат теста.
Если безуспешно, необходимо предоставить возвращаемый объект default
.
enum A {
A_VALUE_1, A_VALUE_2, A_UNKNOWN
};
List<Object[]> testArrays = new ArrayList<>();
testArrays.add(new int[] { 1, 2, 3 });
testArrays.add(new int[] { 3, 4, 5 });
testArrays.add(new int[] { 2, 2, 6 });
A res =
// stream the set of arrays
testArrays.stream()
// apply each set in order to the method
// replacing the array under test with the
// method result
.map(arr->checkSomeCondition(arr))
// filter out any null results
.filter(result->result!=null)
// get the first non-null result
.findFirst()
// return the result or some default answer if all
// results were null.
.orElseGet(()->A.A_UNKNOWN);
System.out.println(res);
С предоставленными данными печатается
A_VALUE_1
Ваш метод теста
public A checkSomeCondition(int[] arr) {
if (arr[0] == arr[1]) {
return arr[0] == 2 ? A.A_VALUE_1 : A.A_VALUE_2;
}
return null;
}
Недостатком является то, что требуется предоставить массив массивов, в которых последующие должны использоваться в случае неудачи предыдущего теста. Возможно, вы сможете адаптировать концепцию к вашим требованиям.