如果您使用的是TestNG,您会发现要使用一个方法作为数据提供程序,您必须创建一个返回二维对象数组的方法。
所以,如果我有一个学生列表,有没有什么实用的方法可以把它转换成一个二维数组。
我是而不是,希望使用这样的循环手动转换它
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;
相反,我正在寻找一个实用函数,如果在任何库中都有可用的话。
或者是为TestNG编写数据提供程序方法的更好方法
发布于 2015-03-10 12:41:16
就这样吧..。让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
发布于 2018-08-30 08:45:55
使用Java8Streams(并使用这个关于converting a stream into array的问题):
@DataProvider
public Object[][] studentProvider() {
return studentList.stream()
.map(student -> new Object[] { student })
.toArray(Object[][]::new);
}
发布于 2017-03-17 15:09:05
这不是直接回答你的问题。但是你也可以像这样解决这个问题
@DataProvider
public Iterator<Object[]> studentProvider() {
List<Student> students = getStudentList();
Collection<Object[]> data = new ArrayList<Object[]>();
students.forEach(item -> data.add(new Object[]{item}));
return data.iterator();
}
https://stackoverflow.com/questions/28824037
复制相似问题