在java中的ParameterizedTest中传递int数组
我试图传入一个数组来测试某个算法,但这些数组似乎没有正确传递或根本没有传递。我手动测试了算法,所以我知道它可以正常工作。如何传递数组以在 JUnit 5 中进行测试?
@ParameterizedTest
@CsvSource(value = {"[13,14,65,456,31,83],[1331,65456]"})
public void palindromeCombos(int[] input, int[] expected){
Palindrome pal = new Palindrome();
List<Integer> actual = pal.allPalindromes(input);
int[] result = new int[actual.size()];
for(int i = 0; i < actual.size(); i++){
result[i] = actual.get(i);
}
Assertions.assertArrayEquals(expected, result);
}
回答
当然,Pablo 的回答是正确的,但我个人并不喜欢解析字符串,如果我不是绝对必须的话。另一种方法可能是使用 aMethodSource代替,并明确提供您需要的参数:
public static Stream<Arguments> palindromeCombos() {
return Stream.of(
Arguments.of(new int[]{13, 14, 65, 456, 31, 83}, new int[]{1331, 65456}));
}
@ParameterizedTest
@MethodSource
public void palindromeCombos(int[] input, int[] expected) {
// Test logic...
}