TestNG如何通过自定义Listener形式实现用例失败重试
发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,TestNG如何通过自定义Listener形式实现用例失败重试,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。标签形式实现用例失败重试
千家信息网最后更新 2025年11月10日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安全错误
数据库的锁怎样保障安全
搜小说网服务器出错
无线网络安全性设置手机
count 数据库
如何正确理解网络安全的意义
哈尔市有名的软件开发公司
怎么选原神服务器
数据库模型的基本构成要素是什么
网络安全人人有责古诗
更新多媒体数据库
数据库需求分析
未来的数据库将朝两个方向发展
希望之村可以自己开个服务器吗
自动驾驶网络安全国家
层次网状数据库的优缺点
网络安全学多久能就业
查询数据库比例数据
网络安全宣传周主题班会简报
lua 配置静态数据库
数据库grade是什么意思
抚州高性价比服务器大概多少钱
北京联想服务器虚拟化部署
医学文献检索外国数据库
深圳计算机应用软件开发定制
天津诚信网络技术开发哪个正规
网络安全等保2.0 报价
3d游戏一般用什么软件开发
中国互联网科技公司陌陌排名
网络安全信息靠人民
从数据库读取数据并在文本框显示
网络安全直接责任人指