TestNG如何通过自定义Listener形式实现用例失败重试
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,TestNG如何通过自定义Listener形式实现用例失败重试,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。标签形式实现用例失败重试
千家信息网最后更新 2026年11月02日TestNG如何通过自定义Listener形式实现用例失败重试
TestNG如何通过自定义Listener形式实现用例失败重试,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
标签形式实现用例失败重试
前面的文章讲解了可以通过标签的形式实现用例失败重试的方法,@Test(retryAnalyzer = MyRetry.class)。
详情可以参考文章:详解TestNG中的用例失败重试和自定义监听器
但是通过@Test标签方式仍然存在一定的问题,即该方法只能左右在类或者方法上,当测试类非常多的时候,需要在每一个类前都增加标签@Test(retryAnalyzer = MyRetry.class)。
有没有什么全局的方式来搞定这件事儿呢?我们可以通过自定义listener来解决!
自定义Listener形式实现用例失败重试
我们已经通过标签实现了用例失败的重试机制,那么我们就可以写一个listenser来控制标签。TestNG中提供了IAnnotationTransformer来让我们实现这一目的。话不多说,直接上代码
重试代码逻辑的代码实现如下:
import org.testng.IRetryAnalyzer; import org.testng.ITestResult; public class MyRetry implements IRetryAnalyzer{ private int retryCount = 0; private static final int maxRetryCount = 3;//用例失败重新执行3次 @Override public boolean retry(ITestResult result) { if (retryCount < maxRetryCount) { retryCount++; return true; } return false; } }自定义Retry 的listener代码实现如下:
import java.lang.reflect.Constructor; import java.lang.reflect.Method; import org.testng.IAnnotationTransformer; import org.testng.annotations.ITestAnnotation; public class RetryListener implements IAnnotationTransformer { @Override public void transform(ITestAnnotation testannotation, Class testClass, Constructor testConstructor, Method testMethod) { testannotation.setRetryAnalyzer(MyRetry.class); } }测试类代码如下:
import org.testng.annotations.Test; import static org.testng.Assert.assertEquals; public class Case1 { @Test public void f1() { System.out.println("f11"); assertEquals("a","b"); } @Test public void f2() { System.out.println("f21"); assertEquals("a","a"); } }设置testng的配置文件,添加自定义的RetryListener
运行结果如下,可以看到重试了3次。
备注:如果在一个case中,方法中有标签重试机制代码如下(设置重试为1),那该如何处理呢?
@Test(retryAnalyzer = MyRetry2.class) public void f1() { System.out.println("f11"); assertEquals("a","b"); }我们运行代码会发现以testng的配置文件中的添加自定义RetryListener中使用的MyRetry.class为主。
关于TestNG如何通过自定义Listener形式实现用例失败重试问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
代码
标签
形式
方法
问题
可以通过
文件
文章
方式
更多
机制
帮助
测试
解答
运行
配置
易行
简单易行
事儿
全局
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
新华互联网科技
云之行互联网科技
互联网电商科技
金融科技 互联网金融
善班互联网科技
广州紫鲸互联网科技
互联网科技宣传片
哈尔滨秒房互联网科技有限公司
海南科技产业互联网平台
济南华为互联网科技产业总部基地
阿里互联网科技公司
伊宁互联网科技做什么的
互联网企业科技类企业如何做账
黑云互联网科技有限公司
产业互联网科技服务公司
美国互联网科技公司
长沙渺峰互联网科技有限公司
西安左小互联网科技有限公司
互联网科技大佬云集
互联网科技创业计划的风险分析
中关村互联网 科技集团
互联网为科技
小马过河互联网科技
武汉健翔互联网络科技有限公司
威龙国际互联网科技公司
互联网金融科技元年
湖北辰鑫科技互联网
易租星互联网科技有限公司
互联网科技博主张洲
安徽九吞吴互联网科技有限公司