我正在尝试将属性文件中的字符串值集合传递给参数化的JUnit测试。 Properties.values()返回Collection,而JUnit需要在Collection结构中传递参数。
这是否意味着我必须转换Collection<Object> to Collection<Object[]>
,其中每个数组实际上都是单个项目?
我试过了:
Arrays.asList(new Object[][] {{theProperties.values()}});
但是这会将所有值放在一个Object中,并且不会像我期望的那样创建Collection。有人可以帮忙吗?
答案 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或更低版本,您可以: