我用的是 testng+ExtentReports 组合生成的报告 可是踢除并不管用 testng 用的 6.10 版本
实现的是 ITestListener 接口的 onFinish 方法,最后重跑的结果全是 skip 状态

代码如下:
1、失败重跑

public class TestRetryAnalyzer implements IRetryAnalyzer{   
    //当前数
    private int retryCount = 1; 
    //最多重跑次数
    private int maxRetryTimes = Config.retryTimes;  
    @Override
    public boolean retry(ITestResult result) {
        if(retryCount <= maxRetryTimes){            
            result.setAttribute("RETRY", retryCount);
            Log.info("用例:"+ result.getName()+" 正在进行第"+retryCount+"次失败重跑");
            Reporter.log("用例:"+ result.getName()+" 正在进行第"+retryCount+"次失败重跑");
            retryCount++;
            return true;
        }
        return false;
    }
}

2、添加失败重跑和踢除:

//剔除失败重跑的用例数
@Override
public void onFinish(ITestContext context) {
    Iterator<ITestResult> listOfFailedTests = context.getFailedTests().getAllResults().iterator();
    while(listOfFailedTests.hasNext()){
        ITestResult failedTest = listOfFailedTests.next();
        ITestNGMethod method = failedTest.getMethod();
         if(context.getFailedTests().getResults(method).size()>1){
             listOfFailedTests.remove();
         }
    }
    extent.flush();     
}

//给所有用例添加失败重跑机制
@Override
public synchronized void onStart(ITestContext context) {
    Log.info("正在为所有测试方法添加失败重跑机制");
    for(ITestNGMethod method: context.getAllTestMethods()){
        method.setRetryAnalyzer(new TestRetryAnalyzer());
    }
}

可是报告还是打印重跑的用例,而且状态是跳过状态

踢除没有起作用


↙↙↙阅读原文可查看相关链接,并与作者交流