testng扩展 失败的用例重跑

新建包TestngRetry , implements IRetryAnalyzer实现重跑功能

implements 是实现多个接口, 接口的方法一般为空的, 必须重写才能使用

 


import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;
import org.testng.Reporter;
import com.test.utils.PropertiesDataProvider;

public class TestngRetry implements IRetryAnalyzer {

    private int retryCount = 1;
    private static int maxRetryCount;

    static {
        maxRetryCount = 2;//重跑的次数
        String sourcecodedir = src;//源码路径
        String sourcecodeencoding = UTF-8;//源代码编码
    }

    public boolean retry(ITestResult result) {
        if (retryCount <= maxRetryCount) {
            String message = result.getName()+" 测试用例执行失败!即将重跑第 ["+ retryCount + "]次 :class [" + result.getTestClass().getName();
            logger.info(message);
            Reporter.setCurrentTestResult(result);
            Reporter.log("RunCount=" + (retryCount + 1));
            retryCount++;
            return true;
        }
        return false;
        
    }

    public static int getMaxRetryCount() {
        return maxRetryCount;
    }

    public int getRetryCount() {
        return retryCount;
    }

}

 

新建RetryListener,implements IAnnotationTransformer

重写transform方法,读取TestngRetry的重跑设置

 

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import org.testng.IAnnotationTransformer;
import org.testng.IRetryAnalyzer;
import org.testng.annotations.ITestAnnotation;

public class RetryListener implements IAnnotationTransformer {

    @SuppressWarnings("rawtypes")
    public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) {
        IRetryAnalyzer retry = annotation.getRetryAnalyzer();
        if (retry == null) {
            annotation.setRetryAnalyzer(TestngRetry.class);
        }
    }

}
 

最后在xml文件中加入监听器RetryListener

    <listeners>
        <listener class-name="com.test.listener.RetryListener" />
    </listeners>

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值