0
\$\begingroup\$

I want to convert a list of integers into a two-dimensional array for use with TestNG DataProvider. Here is the code I've written:

static List<Integer> studentList = new ArrayList<Integer>();
@Test()
public void testMethod(){
 studentList.add(477915);
 studentList.add(477916);
 studentList.add(477917);
 System.err.println(studentList);
}
@DataProvider(name = "persons")
public static Object[][] primeNumbers() {
 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;
}
@Test(dataProvider="persons")
public void testRunPersonRules(int val) {
 System.err.println(val);
}

Is there a better way to accomplish this?

asked Apr 13, 2016 at 18:39
\$\endgroup\$
1
  • \$\begingroup\$ Not an answer, but do look at spock framework for data driven testing. They have nice constructs for this case. \$\endgroup\$ Commented Apr 13, 2016 at 18:46

1 Answer 1

6
\$\begingroup\$

You can use streams:

Object[][] data = studentList.stream()
 .map(studentId -> new Object[]{studentId})
 .toArray(Object[][]::new);
answered Apr 13, 2016 at 18:42
\$\endgroup\$

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.