package test.dataprovider;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Factory;
import org.testng.annotations.Test;
import org.testng.internal.ConstructorOrMethod;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
public class ConstructorOrMethodSample {
String s;
@Factory(dataProvider = "dp1")
public ConstructorOrMethodSample(String s) {
this.s = s;
}
@DataProvider(name = "dp1")
public static Object[][] createData1(ConstructorOrMethod cOrM) {
Assert.assertEquals(cOrM.getDeclaringClass(), ConstructorOrMethodSample.class);
Assert.assertNull(cOrM.getMethod());
Assert.assertNotNull(cOrM.getConstructor());
Constructor c = cOrM.getConstructor();
Assert.assertNotNull(c.getAnnotation(Factory.class));
Assert.assertEquals(c.getParameterTypes().length, 1);
Assert.assertEquals(c.getParameterTypes()[0], String.class);
return new Object[][]{{"0"}, {"1"}};
}
@Test
public void test1() {
}
@DataProvider(name = "dp2")
public Object[][] createData2(ConstructorOrMethod cOrM) {
Assert.assertEquals(cOrM.getDeclaringClass(), ConstructorOrMethodSample.class);
Assert.assertNotNull(cOrM.getMethod());
Assert.assertNull(cOrM.getConstructor());
Method m = cOrM.getMethod();
Assert.assertEquals(m.getName(), "test2");
return new Object[][]{{"Cedric" + s}, {"Alois" + s}};
}
@Test(dataProvider = "dp2")
public void test2(String s) {
}
}