2015-01-09 51 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

相關問題