@Parameter方法可以返回Collection <list <string>&gt;而不是Collection <string []>?

时间:2017-02-17 21:31:17

标签: java junit4 parameterized

当我使用此@Parameter方法执行参数化TestClass时,我收到java.lang.IllegalArgumentException - wrong number of arguments例外。

代码:

@Parameters
public static Collection<List<String>> inputParameter(){
    Collection<List<String>> parameters = new ArrayList<>();
    List<String> args1 = new ArrayList<>();
    args1.add("CD");
    args1.add("AACD");

    List<String> args2 = new ArrayList<>();
    args2.add("BCBC");
    args2.add("BCBC");

    parameters.add(args1);
    parameters.add(args2);

    return parameters;
}

请帮我理解此代码中的问题。感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我不确定我到底知道你想要什么,或者你真正想要完成什么,但我愿意在这里试一试。如果您要提供更多信息,那么您很可能会得到更深入的答案。

您在帖子中提供的代码是可以的并且确实会编译,这完全取决于您如何调用该方法,然后如何通过 inputParameter()方法返回结果(Collection)

因为此方法返回列表集合,您需要声明一个Collection以将返回的集合放入:

Collection<List<String>> list = inputParameter();

有几种方法可以迭代Collection。这一切都取决于你想要的收藏品。我相信您只想查看每个列表包含的内容:

//Java 8 (sequential Stream):
list.forEach((temp) -> {
    System.out.println(temp);
});

控制台输出将是:

[CD, AACD]
[BCBC, BCBC]