将数组传递给Parameterized JUnit [英] Passing arrays to Parameterized JUnit

查看:110
本文介绍了将数组传递给Parameterized JUnit的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am new to parameterized feature of JUnit 4.x and having a problem. My parameterized test consists of 3 integer arrays and I am having difficulty of how to declare them. What I have below generates run-time error:

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

感谢您帮助正确传递三个阵列我的测试。

I appreciate your help to correctly passing the three arrays to my tests.

推荐答案

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

The reason why it is failing is because your test expects Integer arrays whereas you are passing Object type. So you are expanding the type. Try this:

@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}}
        });
    }

这篇关于将数组传递给Parameterized JUnit的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆