Converting List to Two dimensional array Java for TestNG data provider
Converting List to Two dimensional array Java for TestNG data provider
If you are using TestNG you would find that to use a method as a data provider you have to create a method that returns a two dimensional Object array.
So if I have a List of (say) Students , is there any utility method to convert it into a two dimensional array.
I am NOT looking to convert it manually using a loop like this
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;
Instead I am looking at a utility function if any is available in any of the libraries.
Or a better way of writing a data provider method for TestNG
3 Answers
3
This is not directly answer your question. But you can also solve that problem like this
@DataProvider
public Iterator<Object> studentProvider()
List<Student> students = getStudentList();
Collection<Object> data = new ArrayList<Object>();
students.forEach(item -> data.add(new Objectitem));
return data.iterator();
With Java 8 streams (and using this question about converting a stream into array):
@DataProvider
public Object studentProvider()
return studentList.stream()
.map(student -> new Object student )
.toArray(Object::new);
So be it ... let stackoverflow call me a tumbleweed ... but here is the answer.
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
Required, but never shown
Required, but never shown
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.