zoukankan      html  css  js  c++  java
  • Testng Retry失败用例重新运行的方法(二)

    上一篇总结了下retry的基本使用方法,但是有一个问题,就是在报告中,一个用例统计了多次,对报告的数据统计造成了影响。为了消除这种影响,需要在listener类中做下改变。RetryListener.java使用继承TestListenerAdapter的方式实现,通过重载onFinish()方法,处理最后TestCase的Result,只统计一次执行结果。

    package com.sso;
    
    import java.lang.reflect.Constructor;
    import java.lang.reflect.Method;
    import java.util.Iterator;
    import org.testng.IRetryAnalyzer;
    import org.testng.ITestContext;
    import org.testng.ITestNGMethod;
    import org.testng.ITestResult;
    import org.testng.TestListenerAdapter;
    import org.testng.annotations.ITestAnnotation;
    
    public class RetryListener extends TestListenerAdapter {
      @SuppressWarnings("rawtypes")
      public void transform(ITestAnnotation annotation, Class testClass,
          Constructor testConstructor, Method testMethod) {
        IRetryAnalyzer retry = annotation.getRetryAnalyzer();
        if (retry == null) {
          annotation.setRetryAnalyzer(TestngRetry.class);
        }
      }
      
        @Override
        public void onFinish(ITestContext testContext) {
            Iterator<ITestResult> listOfFailedTests = testContext.getFailedTests().getAllResults().iterator();
            while(listOfFailedTests.hasNext()){
                ITestResult failedTest = listOfFailedTests.next();
                ITestNGMethod method = failedTest.getMethod();
                if(testContext.getFailedTests().getResults(method).size()>1){
                    listOfFailedTests.remove();
                }else{
                    if(testContext.getPassedTests().getResults(method).size()>0){
                        listOfFailedTests.remove();
                    }
                }
            }
        } 
    }

    其他类文件无变化,执行testng,得到结果:

    [RemoteTestNG] detected TestNG version 6.14.3
    
    ===============================================
    Suite
    Total tests run: 1, Failures: 1, Skips: 0
    ===============================================
    

    有一点需要提醒的是,Retry机制在遇到DataProvider的时候会失效,无法统计失败用例。

  • 相关阅读:
    spring cloud 学习过程中遇到的问题
    android学习第二天遇到的问题
    android studio 安装与使用第一天
    面试记录2
    谈谈找工作和面试正常的环节
    面试记录1
    重生
    虚拟机ubuntu 登录密码忘记解决办法
    自动化的基于TypeScript的HTML5游戏开发
    借助AMD来解决HTML5游戏开发中的痛点
  • 原文地址:https://www.cnblogs.com/xbxblog/p/9843768.html
Copyright © 2011-2022 走看看