为 TestNG 数据提供程序将列表转换为二维数组 Java
Converting List to Two dimensional array Java for TestNG data provider
如果您使用的是 TestNG,您会发现要将方法用作数据提供者,您必须创建一个 returns 二维对象数组的方法。
因此,如果我有一个(比方说)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;
相反,我正在查看一个实用函数(如果任何库中有可用函数)。
或者为 TestNG 编写数据提供程序方法的更好方法
那就这样吧……让 Whosebug 称我为风滚草……但答案就在这里。
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
这不是直接回答你的问题。但是你也可以这样解决这个问题
@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();
}
使用 Java 8 个流(并使用这个关于 converting a stream into array 的问题):
@DataProvider
public Object[][] studentProvider() {
return studentList.stream()
.map(student -> new Object[] { student })
.toArray(Object[][]::new);
}
IT 在一维数组中也对我有用,我在 testng 数据提供程序中将列表转换为一维数组,可能对某人有用
@DataProvider(name = "Passing List Of Maps")
public Object[] createDataforTest3(){
TestDataReader testDataReader = new TestDataReader();
List<String> caselDs = new ArrayList<String>();
caselDs = testDataReader.getValueForThekeyFromTestDataDirectory("testdate,"XYZ");
Object[] data = new String[caseIDs.size()];
for (int i=0;i<caseIDs.size()-1;i++) {
data[i]= caselDs.get(i);
return data;}
@Test(dataProvider = "Passing List Of Maps",description= "abc")
public void test(String value) {
System.out.println("Value in first Map:" + value);
}
如果您使用的是 TestNG,您会发现要将方法用作数据提供者,您必须创建一个 returns 二维对象数组的方法。
因此,如果我有一个(比方说)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;
相反,我正在查看一个实用函数(如果任何库中有可用函数)。
或者为 TestNG 编写数据提供程序方法的更好方法
那就这样吧……让 Whosebug 称我为风滚草……但答案就在这里。
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
这不是直接回答你的问题。但是你也可以这样解决这个问题
@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();
}
使用 Java 8 个流(并使用这个关于 converting a stream into array 的问题):
@DataProvider
public Object[][] studentProvider() {
return studentList.stream()
.map(student -> new Object[] { student })
.toArray(Object[][]::new);
}
IT 在一维数组中也对我有用,我在 testng 数据提供程序中将列表转换为一维数组,可能对某人有用
@DataProvider(name = "Passing List Of Maps")
public Object[] createDataforTest3(){
TestDataReader testDataReader = new TestDataReader();
List<String> caselDs = new ArrayList<String>();
caselDs = testDataReader.getValueForThekeyFromTestDataDirectory("testdate,"XYZ");
Object[] data = new String[caseIDs.size()];
for (int i=0;i<caseIDs.size()-1;i++) {
data[i]= caselDs.get(i);
return data;}
@Test(dataProvider = "Passing List Of Maps",description= "abc")
public void test(String value) {
System.out.println("Value in first Map:" + value);
}