将数组传递给Parameterized JUnit

Hai*_* Vu 4 java parameterized

我是JUnit 4.x的参数化功能的新手并且遇到了问题.我的参数化测试由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)
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

@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.
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Viv*_*vin 6

失败的原因是因为您的测试需要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}}
        });
    }
Run Code Online (Sandbox Code Playgroud)