如何在不使用 testng 中的侦听器的情况下重新 运行 套件
How to re run suite without using listener in testng
如果套件中的任何测试用例失败,我需要重新运行 TestNG 测试方法本身的完整套件。有什么方法可以在测试方法中使用 XML
文件或测试 class 调用完整套件?完整的套件应该重新运行 after-class 方法或拆卸测试用例或最后一个测试用例
@AfterClass
或 @AfterMethod
我无法使用,因为我正在处理它的一些其他功能。如果上述任何测试方法失败,我需要检查最后一个测试方法,然后我应该重新 运行 完整套件或 class.
或者请建议是否有跟踪哪个测试失败的侦听器,假设我有大约 10 种测试方法,其中 3 和 7 是主要测试,如果它们失败了我不得不重新 运行 完整套件应该在测试方法结束时检查(在测试方法 10 中,我们可以按照示例说。)
您可以使用 AfterSuite
方法重新运行套件。
在包含 AfterSuite
方法的测试 class 中,声明两个静态 int
变量以保持重新运行次数和允许的最大重新运行次数。
然后在 AfterSuite
方法中检查此计数并在未达到最大值时重新运行套件。
public class AnyTestClass {
private static int counter;
private static final int MAX_RERUN = 4;
// replace "" with location of your suite xml -> something like src/test/......
private static final String SUITE_LOC = "";
// test methods.....
@AfterSuite
public void afterSuite(ITestContext ctx) {
if(counter == MAX_RERUN) {
return;
}
if(ctx.getFailedTests().size() > 0) {
counter++;
// you could also have this list as static final in the class.
List<String> suiteFiles = new ArrayList<>();
suiteFiles.add(SUITE_LOC);
TestNG runner = new TestNG();
runner.setTestSuites(suiteFiles);
runner.run();
}
}
}
如果套件中的任何测试用例失败,我需要重新运行 TestNG 测试方法本身的完整套件。有什么方法可以在测试方法中使用 XML
文件或测试 class 调用完整套件?完整的套件应该重新运行 after-class 方法或拆卸测试用例或最后一个测试用例
@AfterClass
或 @AfterMethod
我无法使用,因为我正在处理它的一些其他功能。如果上述任何测试方法失败,我需要检查最后一个测试方法,然后我应该重新 运行 完整套件或 class.
或者请建议是否有跟踪哪个测试失败的侦听器,假设我有大约 10 种测试方法,其中 3 和 7 是主要测试,如果它们失败了我不得不重新 运行 完整套件应该在测试方法结束时检查(在测试方法 10 中,我们可以按照示例说。)
您可以使用 AfterSuite
方法重新运行套件。
在包含 AfterSuite
方法的测试 class 中,声明两个静态 int
变量以保持重新运行次数和允许的最大重新运行次数。
然后在 AfterSuite
方法中检查此计数并在未达到最大值时重新运行套件。
public class AnyTestClass {
private static int counter;
private static final int MAX_RERUN = 4;
// replace "" with location of your suite xml -> something like src/test/......
private static final String SUITE_LOC = "";
// test methods.....
@AfterSuite
public void afterSuite(ITestContext ctx) {
if(counter == MAX_RERUN) {
return;
}
if(ctx.getFailedTests().size() > 0) {
counter++;
// you could also have this list as static final in the class.
List<String> suiteFiles = new ArrayList<>();
suiteFiles.add(SUITE_LOC);
TestNG runner = new TestNG();
runner.setTestSuites(suiteFiles);
runner.run();
}
}
}