将列表转换为二维数组 Java 以用于 TestNG 数据提供程序

SK1*_*76H 5 java testng

如果您使用 TestNG,您会发现要将方法用作数据提供者,您必须创建一个返回二维 Object 数组的方法。

因此,如果我有一个 List of (say) Students ,是否有任何实用方法可以将其转换为二维数组。

期待用这样的循环手动将其转换

 List<Student> studentList = getStudentList();

 Object [][] objArray = new Object[studentList.size][];

 for(int i=0;i< studentList.size();i++){
    objArray[i] = new Object[1];
    objArray[i][0] = studentList.get(i);
 } 

 return objArray;
Run Code Online (Sandbox Code Playgroud)

相反,我正在查看一个实用程序函数,如果任何库中都有可用的函数。

或者为 TestNG 编写数据提供程序方法的更好方法

ale*_*oid 8

使用 Java 8 流(并使用这个关于将流转换为数组的问题):

@DataProvider
public Object[][] studentProvider() {
    return studentList.stream()
        .map(student -> new Object[] { student })
        .toArray(Object[][]::new);
}
Run Code Online (Sandbox Code Playgroud)


SK1*_*76H 4

就这样吧……让 stackoverflow 称我为风滚草……但这就是答案。

List<Student> studentList = getStudentList();

 Object [][] objArray = new Object[studentList.size][];

 for(int i=0;i< studentList.size();i++){
    objArray[i] = new Object[1];
    objArray[i][0] = studentList.get(i);
 } 

 return objArray
Run Code Online (Sandbox Code Playgroud)