Reputation: 6909
When I run the tests via a testNG xml file and there is an exception within the @BeforeClass method of one of the Test classes, then all subsequent Test classes are skipped by TestNG.
When I change the annotation in the TestBase class to @BeforeSuite for example, then all tests are run, even if there is an exception in on of the @BeforeClass methods.
When you run the xml file, complete RunAllTestClasses02 class is skipped.
testNG xml file:
<?xml version="1.0" encoding="UTF-8"?>
<suite name = "MiscSuite">
<test name = "MiscTest">
<classes >
<class name="drkthng.misc.RunAllTestClasses01" />
<class name="drkthng.misc.RunAllTestClasses02" />
</classes>
</test>
</suite>
TestBase class with a @BeforeClass method:
public abstract class RunAllTestClassesBase {
@BeforeClass
public void beforeClass() {
// do something that all Test classes will need
}
}
Test class that throws Exception within @BeforeClass method:
public class RunAllTestClasses01 extends RunAllTestClassesBase {
@BeforeClass
public void beforeClass() {
Assert.assertTrue(false);
}
@Test
public void Test01() {
Assert.assertTrue(true);
}
}
Upvotes: 10
Views: 16895
Reputation: 98
Try to add @AfterClass(alwaysrun = true)
or/and @AfterMethod(alwaysrun=true)
as by default they are skipped if either BeforeClass or BeforeMethod are not completed.
The documentation on testNG Configuration Failures, Policy, and alwaysRun explains whether/when configuration failures cause listener methods (alwaysRun
and other listeners) to be skipped, failure policies and best practices.
Upvotes: 0