While pulling data values into an XML file can be quite handy, tests occasionally require complex types, which can’t be represented as a String or a primitive value. TestNG handles this scenario with its @DataProvider annotation, which facilitates the mapping of complex parameter types to a test method.
@DataProvider for Vector, String or Integer as parameter
Parameterized Number is : java.util.AbstractList Parameterized Number is : java.util.AbstractCollection Parameterized Number is : 1 Parameterized Number is : 2 Parameterized Number is : 1 Parameterized Number is : 2 PASSED: parameterIntTest(class java.util.Vector, [Ljava.lang.String;@1016632) PASSED: parameterIntTest(class java.lang.String, [Ljava.lang.String;@10a6ae2) PASSED: parameterIntTest(class java.lang.Integer, [Ljava.lang.String;@4a6cbf)
@DataProvider for object as parameter P.S “TestNGTest6_3_0” is an simple object with just get set method for demo.
System.out.println("Parameterized Number is : "+ clzz.getMsg());
System.out.println("Parameterized Number is : "+ clzz.getNumber());
}
//This function will provide the patameter data
@DataProvider(name ="Data-Provider-Function")
publicObject[][] parameterIntTestProvider(){
TestNGTest6_3_0 obj =new TestNGTest6_3_0();
obj.setMsg("Hello");
obj.setNumber(123);
returnnewObject[][]{
{obj}
};
}
}
Result
Parameterized Number is : 123 PASSED: parameterIntTest(TestNGTest6_3_0@dc6a77)
TestNG’s parameterized test is very user friendly and flexible (either in XML file or inside the class). It can support many complex data type as parameter value and the possibility is unlimited. As example above, we even can pass in our own object (TestNGTest6_3_0) for parameterized test
No comments:
Post a Comment