package org.testng; import java.lang.reflect.Constructor; import java.util.ArrayList; import java.util.Collection; import java.util.List; /** * Helper methods used by the Eclipse plug-in when converting tests from JUnit. * * @author Cedric Beust <cedric@beust.com> * */ public class ConversionUtils { /** * Turns the output of a JUnit 4 @Parameters style data provider into * one that is suitable for TestNG's @DataProvider. */ public static Object[] wrapDataProvider(Class cls, Collection<Object[]> data) { List result = new ArrayList(); for (Object o : data) { Object[] parameters = (Object[]) o; Constructor ctor = null; try { for (Constructor c : cls.getConstructors()) { // Just comparing parameter array sizes. Comparing the parameter types // is more error prone since we need to take conversions into account // (int -> Integer, etc...). if (c.getParameterTypes().length == parameters.length) { ctor = c; break; } } if (ctor == null) { throw new TestNGException("Couldn't find a constructor in " + cls); } result.add(ctor.newInstance(parameters)); } catch (Exception ex) { ex.printStackTrace(); } } return result.toArray(); } }