2015-01-09 23 views
0

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

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

我尝试这样做:

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

但这把所有的值一起在一个对象,因此我希望它不会创建一个集合。有人可以帮忙吗?

回答

3

看起来像参数化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或以下,您可以:

+0

你能告诉我怎样才能在Java 7中做一个循环?那里我有点困惑。 – naspras 2015-01-12 16:20:10

+0

我已经更新了我的答案。 – nhylated 2015-01-12 17:22:07

+0

@naspras如果我的回答解决了您的问题,请将其标记为正确答案。 – nhylated 2015-01-12 17:49:53

相关问题