<pre name="code" class="java">package qa.testNG;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Iterator;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class TestOnly {
String va;
String vb;
/*The parameter defined in testNG xml file like:
* <parameter name="va" value="this is va value"></parameter>
* <parameter name="vb" value="this is vb value"></parameter>
*/
@Parameters({ "va", "vb" })
public TestOnly(String a, String b) {
this.va = a;
this.vb = b;
}
@DataProvider(name = "toProvideData")
public Iterator<Object[]> toProvideData(Method m) {
ArrayList<Object[]> al = new ArrayList<>();
switch (m.getName()) {
case "testMethodA":
al.clear();
al.add(new Integer[] { 1, 2 });
al.add(new Integer[] { 3, 4 });
break;
case "testMethodB":
al.clear();
al.add(new Integer[] { 5, 6 });
al.add(new Integer[] { 7, 8 });
}
return al.iterator();
// return new Object[][]{{"a1","a2"},{"b1","b2"}};
}
@Test(groups = { "dataProviderGroup" }, dataProvider = "toProvideData")
public void testMethodA(int a, int b) {
System.out.println("Multiples in testMethodA: " + a * b);
}
@Test(groups = { "dataProviderGroup" }, dataProvider = "toProvideData")
public void testMethodB(int a, int b) {
System.out.println("Multiples in testMethodB: " + a * b);
}
@Test(groups = "paraInjectGroup")
public void testParameterInject() {
System.out.println(va+vb);
}
@BeforeTest(alwaysRun=true)
void beforeTest(){
System.out.println("before test");
}
@BeforeMethod(alwaysRun=true)
void beforeMethod(){
System.out.println("before method");
}
}
//testng.xml
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Cuke Sample" verbose="1">
<span style="white-space:pre"> </span><parameter name="va" value="vaaaaaaa"></parameter>
<span style="white-space:pre"> </span><parameter name="vb" value="vbbbbbb"></parameter>
<span style="white-space:pre"> </span><test name="Cukes test1">
<span style="white-space:pre"> </span><groups>
<span style="white-space:pre"> </span><define name="masterGroup">
<span style="white-space:pre"> </span><include name="paraInjectGroup"></include>
<span style="white-space:pre"> </span><include name="dataProviderGroup"></include>
<span style="white-space:pre"> </span></define>
<span style="white-space:pre"> </span><run>
<span style="white-space:pre"> </span><include name="masterGroup"></include>
<span style="white-space:pre"> </span></run>
<span style="white-space:pre"> </span></groups>
<span style="white-space:pre"> </span><packages>
<span style="white-space:pre"> </span><package name="qa.testNG"></package>
<span style="white-space:pre"> </span></packages>
<span style="white-space:pre"> </span></test>
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span><test name="Cukes test2">
<span style="white-space:pre"> </span><groups>
<span style="white-space:pre"> </span><run>
<span style="white-space:pre"> </span><include name="dataProviderGroup"></include>
<span style="white-space:pre"> </span></run>
<span style="white-space:pre"> </span></groups>
<span style="white-space:pre"> </span><packages>
<span style="white-space:pre"> </span><package name="qa.testNG"></package>
<span style="white-space:pre"> </span></packages>
<span style="white-space:pre"> </span></test>
</suite>
</pre><pre name="code" class="java">