将数组传递给Parameterized JUnit

我是JUnit 4.x的参数化function的新手并且遇到了问题。 我的参数化测试由3个整数数组组成,我很难如何声明它们。 我下面的内容会产生运行时错误:

testGeneral[0] caused an ERROR: argument type mismatch argument type mismatch java.lang.IllegalArgumentException at java.lang.reflect.Constructor.newInstance(Constructor.java:526) testGeneral[1] caused an ERROR: argument type mismatch argument type mismatch java.lang.IllegalArgumentException at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 

这是我的代码:

 @RunWith(Parameterized.class) public class MyArrayTest { private Integer[] inputList1; private Integer[] inputList2; private Integer[] expectedList; public MyArrayTest(Integer[] li1, Integer[] li2, Integer[] expected) { // ========> Runtime error happens here. <========= this.inputList1 = li1; this.inputList2 = li2; this.expectedList = expected; } @Parameterized.Parameters public static Collection testCases() { return Arrays.asList(new Object[][][] { {{1,1,1}, {2,2,2}, {3,3,3}}, {{2,2,2}, {3,3,3}, {4,4,4}} }); } @Test public void testGeneral() { // Do some test with this.inputList1, this.inputList2, // and verify with this.expectedList // I am not even getting here yet. } } 

感谢您帮助正确地将三个数组传递给我的测试。

它失败的原因是因为您的测试需要Integer数组而您传递的是Object类型。 所以你正在扩展类型。 尝试这个:

 @Parameterized.Parameters public static Collection testCases() { return Arrays.asList(new Integer[][][] { {{1,1,1}, {2,2,2}, {3,3,3}}, {{2,2,2}, {3,3,3}, {4,4,4}} }); }