首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将列表转换为二维数组Java for TestNG数据提供程序

将列表转换为二维数组Java for TestNG数据提供程序
EN

Stack Overflow用户
提问于 2015-03-03 12:20:30
回答 4查看 8.6K关注 0票数 5

如果您使用的是TestNG,您会发现要使用一个方法作为数据提供程序,您必须创建一个返回二维对象数组的方法。

所以,如果我有一个学生列表,有没有什么实用的方法可以把它转换成一个二维数组。

我是而不是,希望使用这样的循环手动转换它

代码语言:javascript
复制
 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编写数据提供程序方法的更好方法

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-03-10 12:41:16

就这样吧..。让stackoverflow叫我风滚草..。但这就是答案。

代码语言:javascript
复制
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
票数 3
EN

Stack Overflow用户

发布于 2018-08-30 08:45:55

使用Java8Streams(并使用这个关于converting a stream into array的问题):

代码语言:javascript
复制
@DataProvider
public Object[][] studentProvider() {
    return studentList.stream()
        .map(student -> new Object[] { student })
        .toArray(Object[][]::new);
}
票数 8
EN

Stack Overflow用户

发布于 2017-03-17 15:09:05

这不是直接回答你的问题。但是你也可以像这样解决这个问题

代码语言:javascript
复制
  @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();
  }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28824037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档