TestNG如何通过自定义Listener形式实现用例失败重试
发表于:2023-03-21 作者:安全数据网编辑
编辑最后更新 2023年03月21日,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形式实现用例失败重试问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
c语言网络技术和编程语言总结
c语言对应的三级考试网络技术
网站服务器后台如何加防护密码
c语言软件开发步骤
c语言中网络技术知识点
服务器对权限提升的防护措施
怎么在阿里云租服务器
黑苹果能做web服务器吗
c语言和网络技术哪个好考
云服务器2核4G是什么性能
网络安全排名公司
医药软件开发项风险预测
数据库 查询字段名及注释
从数据库读取数据到xml
美国网络安全测试平台
武汉app软件开发企业
加固无线网络安全
ibm服务器内存条价格
名片管理软件开发苹果
上手互联网科技有限公司
软件开发一般多大学不会晚
软件开发计算机考试科目
两台电脑直接怎么传数据库
江苏进口软件服务器云服务器
网络安全知识三百字每三句一段
国际网络安全公司市盈率
俞新达嘉兴软件开发
深圳福米特互联网科技有限公司
佛山同创网络技术
数据库添加照片地址该怎么写
银符数据库怎么注册
成都计算机软件开发哪家好
台式机用服务器内存效果怎样
数据库更新迭代
个人网络安全工具 图片
学好网络安全的作用
服务器数据迁移方案
泗洪网络安全保卫大队
国企有哪些网络安全
杭州我汇网络技术有限公司待遇