将字符串值列表传递给参数化的JUnit测试

时间:2015-01-09 21:12:11

标签: java collections junit4 parameterized-tests

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

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

我试过了:

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

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

1 个答案:

答案 0 :(得分: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或更低版​​本,您可以: