虽然 configfailurepolicy 值设置为“继续”,但重试测试被跳过。
例子:
testng.xml - 在套件级别,configfailurepolicy 值设置为“继续”
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="classes" thread-count="1"
configfailurepolicy="continue">
<test name="Front-End">
<classes>
<class
name="com.tests.ExcepionAfterMethodTest">
</class>
</classes>
</test>
</suite>
测试:在配置(即@AfterMethod)方法中抛出异常导致失败。并使用 RetryAnalyzer 重试失败的测试。
import org.testng.Assert;
import org.testng.annotations.Test;
public class ExcepionAfterMethodTest{
@BeforeMethod(alwaysRun=true)
public void beforeMethod() {
System.out.println("Before Method");
}
@Test (alwaysRun=true, retryAnalyzer=RetryAnalyzer.class)
public void method() {
System.out.println("Method");
Assert.assertTrue(false);
}
@Test (alwaysRun=true)
public void method1() {
System.out.println("Method1");
}
@AfterMethod(alwaysRun=true)
public void afterMethod() throws Exception {
System.out.println("After Method");
throw new Exception();
}
}
RetryAnalyzer:如果发生故障,将重试一次。
import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;
public class RetryAnalyzer implements IRetryAnalyzer {
private int counter = 0;
private int retryLimit = 1;
@Override
public boolean retry(ITestResult result) {
if (counter < retryLimit) {
counter++;
return true;
}
return false;
}
}
结果:由于@AfterMethod 失败,重试测试,但跳过了@Test。因此,'Method' 不会打印在第 5 行的结果中。
之前的方法
方法
后方法
之前的方法
后方法
方法1
后方法
预期结果:由于 configfailurepolicy 配置为“继续”,因此不应跳过重试测试。因此,期望 'Method' 应该打印在第 5 行的结果中,如下所示。
之前的方法
方法
后方法
之前的方法
方法
后方法
方法1
后方法