关于TestNg 的失败用例重试,网上搜了很多资料,针对使用了dataProvider的参数化用例都存在一些问题。
总体方案大同小异:
1.新建TestngRetry类实现IRetryAnalyzer接口,这个类主要用于写失败重跑的规则
2.新建RetryListener类实现IAnnotationTransformer接口,用于监听事件
3.新建AutoTestListener类继承TestListenerAdapter类,用于重置重试次数,处理重试case结果集,用于生成不重复的测试报告
4.在 TestNg 的 XML 文件中配置监听
参照链接:点我查看
然而我在实际调试过程中,发现有如下问题:
错误的case重试后,在之后执行的case,都会重复执行多次,且每错一条case,后续的用例就重复多执行一次,如下图所示:
当1个case错误,后续case重复执行两次,当2个case错误,后续case重复执行三次。
这个问题困扰了我一天,在分析排除了上面实现错误用例重试方案的问题后,感觉这个问题只能是testng框架本身的问题,应该和内存的使用有关系吧。百折不挠的我最终终于查到该问题确实是testng版本的问题,使用testng 6.9.10版本及以下会有这个问题,更新为6.9.13.6及以上的版本运行结果正常。
最后,testng版本问题参考:https://github.com/cbeust/testng/issues
网友评论