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

Pass a list of string values to a parameterized JUnit test

我正在尝试将一组字符串值从属性文件传递到参数化 JUnit 测试。 Properties.values() returns Collection 而 JUnit 要求在 Collection 结构中传递参数。

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

我试过这个:

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

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

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

将集合转换为集合:

使用 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 或以下,您可以: