在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...
}


以上是在java中的ParameterizedTest中传递int数组的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>