running depend testng method using @factory -
scenario:-
my testdata 1)string 2) string b 3) string c
now have class in have data provider , factory , data provider has 3 value string
public class testparent { public string tenant; @factory(dataprovider = "mylist") public testparent(string s) { tenant = s; } @dataprovider(name = "mylist") public object[][] mylist() { list<string> s = new arraylist<string>(); s.add("a"); s.add("b"); s.add("c"); object[][] objarray = new object[s.size()][]; (int = 0; < s.size(); i++) { objarray[i] = new object[1]; objarray[i][0] = s.get(i); } return objarray; } @test() public void setup() { system.out.print(tenant); system.out.print("\n"); } @test(dependsonmethod = setup) public void beforeclass() { system.out.print("hello"); system.out.print(tenant); system.out.print("\n"); } @test(dependsonmethod = beforeclass) public void afterclass() { system.out.print("bye"); system.out.print(tenant); system.out.print("\n"); } @test(dependsonmethod = afterclass) public void mm() { system.out.print("yes"); system.out.print(tenant); system.out.print("\n"); } }
output want
a
helloa
byea
yesa
b
hellob
byeb
yesb
c
helloc
byec
yesc
create 2 separate classes factoryclass , testdataclass , run factoryclass textng.xml
factoryclass:
public class factoryclass { @factory(dataprovider = "mylist") public object[] createinstances(string str) { return new object[] {new testdata(str)}; } @dataprovider(name = "mylist") static public object[][] mylist(){ return new object[][] { new object[] { new string("a") }, new object[] { new string("b") }, }; } }
testdataclass:
public class testdata { private string tenant; public testdata(string s) { this.tenant=s; } @test() public void setup( ) { system.out.print(tenant); system.out.print("\n"); } @test(dependsonmethods="setup") public void beforeclass() { system.out.print("hello"); system.out.print(tenant); system.out.print("\n"); } @test(dependsonmethods="beforeclass") public void afterclass() { system.out.print("bye"); system.out.print(tenant); system.out.print("\n"); } @test(dependsonmethods="afterclass") public void mm() { system.out.print("yes"); system.out.print(tenant); system.out.print("\n"); } }
xml file:
<suite name="stacknew" verbose="1"> <test name="test" group-by-instances="true"> <classes> <class name="stack.factoryclass"></class> </classes> </test> </suite>
if face sequence issue: link
Comments
Post a Comment