testng失败自动重试
使用的监听类有:IRetryAnalyzer、TestListenerAdapter、IAnnotationTransformer
public class Retry implements IRetryAnalyzer { private int retryCnt = 0; private int maxRetryCnt = 1; @Override public boolean retry(ITestResult iTestResult) { if (retryCnt<maxRetryCnt){ retryCnt++; return true; } return false; } // 用于重置retryCnt public void reset() { retryCnt = 0; } }
public class RetryListener implements IAnnotationTransformer { @Override public void transform(ITestAnnotation iTestAnnotation, Class aClass, Constructor constructor, Method method) { IRetryAnalyzer retry = iTestAnnotation.getRetryAnalyzer(); if (retry == null) { iTestAnnotation.setRetryAnalyzer(Retry.class); } } }
/** * 使用dataProvider时,每个case运行结束都强制重置重试次数,如果失败,则重试结束后,重置次数 */ public class TestngListener extends TestListenerAdapter { @Override public void onTestSuccess(ITestResult tr) { super.onTestSuccess(tr); // 对于dataProvider的用例,每次成功后,重置Retry次数 Retry retry = (Retry) tr.getMethod().getRetryAnalyzer(); retry.reset(); } @Override public void onTestFailure(ITestResult tr) { super.onTestFailure(tr); // 对于dataProvider的用例,每次失败后,重置Retry次数 Retry retry = (Retry) tr.getMethod().getRetryAnalyzer(); retry.reset(); } }
新建测试类
public class MyTest { @Test(dataProvider = "d1") public void dd(int i) { System.out.println("i="+i); int count = 0; Assert.assertEquals(i,5); } @DataProvider(name="d1") public Object[][] aa() { return new Object[][] { { 11}, }; } }
testng的xml文件加入listener
<test name="test"> <packages> <package name="qjf"></package> </packages> </test> <listeners> <listener class-name="com.crm.Retry.RetryListener"></listener> <listener class-name="com.Retry.TestngListener"></listener> </listeners>
运行该xml文件,失败后又重试了1次,重试的那一次背忽略
参考:https://ntflc.com/2018/10/18/TestNg-Retry-Failed-Tests-with-DataProvider/#more
******************************************************************************************************************************************
作者:乔叶叶
博客地址:http://www.cnblogs.com/qiaoyeye/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
******************************************************************************************************************************************
作者:乔叶叶
博客地址:http://www.cnblogs.com/qiaoyeye/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
******************************************************************************************************************************************
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?