1

我正在尝试将属性文件中的字符串值集合传递给参数化的 JUnit 测试。Properties.values() 返回 Collection 而 JUnit 需要在 Collection 结构中传递参数。

这是否意味着我必须转换Collection<Object> to Collection<Object[]>,每个数组实际上是一个项目?

我试过这个:

Arrays.asList(new Object[][] {{theProperties.values()}});

但这会将所有值放在一个对象中,并且不会像我期望的那样创建一个集合。有人可以帮忙吗?

4

1 回答 1

4

看起来参数化的 JUnit 测试需要一个 Collection,即使每个测试都有一个参数。

将集合转换为集合:

使用 Java 8:

Collection<String> c = Arrays.asList("a", "b");
Collection<Object[]> co = c.stream()
                            .map(ele -> new Object[]{ele})
                            .collect(Collectors.toList());

使用 Java 7 或更低版本:

Collection<String> coll = Arrays.asList("a", "b");
Collection<Object[]> params = new ArrayList<Object[]>();
for (String s : coll) {
    params.add(new Object[] { s });
}

对于 Java 7 或更低版本,您可以:

于 2015-01-09T22:03:00.937 回答