TestNG dependsOnMethods from different class
DependsOnMethods cannot be used from different class ,To resolve this we can use dependsOnGroups;
Do code change in;
1. dependsOnGroups class;
@Test(groups={"prerequisites" })
public void M1()
{
}
2. class which calls dependsOnGroups;
@Test(dependsOnGroups={"prerequisites"})
public void M2()
{
}
3. xml
<groups>
<run>
<include name ="prerequisites"/>
</run>
</groups>
You can use groups
and dependsOnGroups
in the TestNG @Test
annotation, as described in earlier answers.
However, both classes need to be under the same <test>
.
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite" verbose="1" >
<test name="Test" >
<classes>
<class name="c1" />
<class name="c2" />
</classes>
</test>
</suite>
The following will result in an exception when running the test suite.
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1" verbose="1" >
<test name="Test1" >
<classes>
<class name="c1" />
</classes>
</test>
<test name="Test2">
<classes>
<class name="c2" />
</classes>
</test>
</suite>
Put the method in a group
and use dependsOnGroups
.
class c1 {
@Test(groups={"c1.verifyConfig"})
public void verifyConfig() {
//verify some test config parameters
}
}
class c2 {
@Test(dependsOnGroups={"c1.verifyConfig"})
public void dotest() {
//Actual test
}
}
It is recommended to verify configuration in a @Before
* and throw if something goes wrong there so the tests won't run. This way the tests can focus on just testing.
class c2 {
@BeforeClass
public static void verifyConfig() {
//verify some test config parameters
//Usually just throw exceptions
//Assert statements will work
}
@Test
public void dotest() {
//Actual test
}
}