TestNG如何通过自定义Listener形式实现用例失败重试
发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,TestNG如何通过自定义Listener形式实现用例失败重试,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。标签形式实现用例失败重试
千家信息网最后更新 2024年11月23日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安全错误
数据库的锁怎样保障安全
安捷信网络技术有限公司
华夏银行软件开发岗位笔试题
电脑服务器程序在哪里
上传照片存入数据库表
菜鸟网络技术栈
如何组一台ktv服务器
软件开发5个核心原则
数据库单独导出表数据
科技互联网大佬名言
服务器一体机开机不起作用
河南悦如网络技术有限公司简介
历史上有名的网络安全事件
无线家庭网络技术
网络安全管理及应用技术贾铁军
数据库 %type
网络安全公司哪家比较好
计算机网络技术基测课本
万家乐ONE 无法连接到服务器
考拉快收服务器故障
通信网络安全架构
网络安全包括那三个方面
互联网金融电子软件开发
sql数据库名写什么
绿盟堡垒机控制服务器设置
云服务器是什么系统
触发器传到另一台数据服务器
小学生网络安全小常识儿歌
湖南2021网络安全宣传周
巴克放映机服务器设置
昆明云电网络技术有限公司