TestNG如何通过自定义Listener形式实现用例失败重试
发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,TestNG如何通过自定义Listener形式实现用例失败重试,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。标签形式实现用例失败重试
千家信息网最后更新 2025年02月05日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安全错误
数据库的锁怎样保障安全
瓦肯软件开发
web前端数据库后端数据库
手游版mc服务器
网络安全 模数运算
网络技术认知实训报告
邢台vps香港服务器
美国州政府网络安全
自架dns服务器
腾讯网络安全大牛
数据库和数据仓库的技术
医院网络安全管理工作
有什么软件可以建立数据库
dl380服务器高温后自动重启
做软件开发的公司如何做账
湖南郴州学it软件开发月薪
深圳小蜜蜂网络技术有限公司
数据库 打开远程连接
企业信用基础数据库是什么意思
安防软件开发 资质证书
宁波余姚整机柜服务器
堡垒之夜服务器炸裂
怎么关联plsql数据库
服务器出现异常无法开机
昌图软件开发系统
web打包apk 数据库怎么办
英雄联盟为啥连接不了服务器
阿里云服务器如何上传
数据库事务面试
软件开发培训直播
玉溪新华互联网科技收费