'dependsOnGroups' property is used to specify the list of groups that this test method depends on. This test method gets executed once all the methods in the groups are executed successfully.
package com.sample.app.tests;
import org.testng.annotations.Test;
public class DependentOnGroupTest1 {
@Test(groups = { "group1" })
public void A() {
System.out.println("I am in A");
}
@Test(groups = { "group1" })
public void B() {
System.out.println("I am in B");
}
@Test(dependsOnGroups = { "group1" })
public void C() {
System.out.println("I am in C");
}
@Test(groups = { "group1" })
public void D() {
System.out.println("I am in D");
}
}
When you run ‘DependentOnGroupTest1.java’, you will see below messages in console.
[RemoteTestNG] detected TestNG version 7.0.0 I am in A I am in B I am in D I am in C PASSED: A PASSED: B PASSED: D PASSED: C =============================================== Default test Tests run: 4, Failures: 0, Skips: 0 =============================================== =============================================== Default suite Total tests run: 4, Passes: 4, Failures: 0, Skips: 0 ===============================================
From the console output, you can confirm test case ‘C’ is execute after A, B and D are executed.
If any of the test method in a group is failed, then the test method that depends on this group is skipped.
DependentOnGroupTest2.java
package com.sample.app.tests;
import static org.testng.Assert.assertTrue;
import org.testng.annotations.Test;
public class DependentOnGroupTest2 {
@Test(groups = { "group2" })
public void A() {
System.out.println("I am in A");
}
@Test(groups = { "group2" })
public void B() {
System.out.println("I am in B");
}
@Test(dependsOnGroups = { "group2" })
public void C() {
System.out.println("I am in C");
}
@Test(groups = { "group2" })
public void D() {
System.out.println("I am in D");
assertTrue(false);
}
}
Run ‘DependentOnGroupTest2.java’, you will see below messages in console.
[RemoteTestNG] detected TestNG version 7.0.0
I am in A
I am in B
I am in D
PASSED: A
PASSED: B
FAILED: D
java.lang.AssertionError: did not expect to find [true] but found [false]
at org.testng.Assert.fail(Assert.java:97)
at org.testng.Assert.failNotEquals(Assert.java:969)
at org.testng.Assert.assertTrue(Assert.java:43)
at org.testng.Assert.assertTrue(Assert.java:53)
at com.sample.app.tests.DependentOnGroupTest2.D(DependentOnGroupTest2.java:26)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:133)
at org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:584)
at org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:172)
at org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46)
at org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:804)
at org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:145)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
at java.util.ArrayList.forEach(ArrayList.java:1257)
at org.testng.TestRunner.privateRun(TestRunner.java:770)
at org.testng.TestRunner.run(TestRunner.java:591)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:402)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:396)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:355)
at org.testng.SuiteRunner.run(SuiteRunner.java:304)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1180)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1102)
at org.testng.TestNG.runSuites(TestNG.java:1032)
at org.testng.TestNG.run(TestNG.java:1000)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
SKIPPED: C
java.lang.Throwable: Method DependentOnGroupTest2.C()[pri:0, instance:com.sample.app.tests.DependentOnGroupTest2@56235b8e] depends on not successfully finished methods in group "group2"
at org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:99)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
at java.util.ArrayList.forEach(ArrayList.java:1257)
at org.testng.TestRunner.privateRun(TestRunner.java:770)
at org.testng.TestRunner.run(TestRunner.java:591)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:402)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:396)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:355)
at org.testng.SuiteRunner.run(SuiteRunner.java:304)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1180)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1102)
at org.testng.TestNG.runSuites(TestNG.java:1032)
at org.testng.TestNG.run(TestNG.java:1000)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
===============================================
Default test
Tests run: 4, Failures: 1, Skips: 1
===============================================
===============================================
Default suite
Total tests run: 4, Passes: 2, Failures: 1, Skips: 1
===============================================
No comments:
Post a Comment