2015-07-21 85 views
0

假设我有一个字符串列表,我想要一个DataProvider产生2个列表的排列,以用作其中一个测试函数的2个参数。我至今是:TestNG DataProvider - 如何生成列表中的所有排列

@DataProvider(name = "Permutation") 
public static Object[][] permutations() { 
    List <String> permutations = getPermutationList(); 
    Object[][] dataList = new Object[permutations.size()][permutations.size()]; 
    for (int i = 0; i < permutations.size(); i++) { 
     dataList[i] = new Object[permutations.size()]; 
     for (int j = 0; j < permutations.size(); j++) { 
      dataList[i][j] = permutations.get(i); 
     } 
    } 
    return dataList; 
} 

DataProvider不按预期工作,每一行只是空。

有什么提示吗?谢谢

+0

node和nodeTypeList在哪填充? – Nick

+0

editted,只是我用来获取排列列表的函数和类 – Kiddo

+0

如果你有一个调试器(或者做一个'System.out'),我会尝试看看'permutations.get(i) “实际上收益率。 – Nick

回答

0

getPermutationList是您的代码问题。确保它正在返回您所期望的数据。下面是与上面相同的代码,只有在初始化硬编码数组的情况下。运行时,dataList对象中有数据。

public static Object[][] permutations() { 
    List <String> permutations = new ArrayList<String>(Arrays.asList("foo", "bar")); 
    Object[][] dataList = new Object[permutations.size()][permutations.size()]; 
    for (int i = 0; i < permutations.size(); i++) { 
     dataList[i] = new Object[permutations.size()]; 
     for (int j = 0; j < permutations.size(); j++) { 
      dataList[i][j] = permutations.get(i); 
     } 
    } 
    return dataList; 
}