首页 > 解决方案 > testng 套件结果未提供正确的计数

问题描述

根据论坛中提供的讨论,更改失败计数、基于重试计数跳过测试的方法未按预期工作。侦听器已包含在套件中的 testng.xml 中,因此不确定为什么计数是不被修改。测试版本:6.14.3

/*Test class*/

    import org.testng.Assert;
    import org.testng.annotations.Listeners;
    import org.testng.annotations.Test;
    import org.testng.asserts.SoftAssert;
    import org.testng.ITestNGListener;
    import org.testng.ISuiteListener;
    import org.testng.ISuite;


    public class TestclassTest{
        Testclass t = new Testclass();

          @Test
          public void compareDataClassValues() {
              Assert.assertEquals(t.compareDataClassValues(1, 0), true);
              Assert.assertEquals(true, true);
              Assert.assertEquals(true, false);
          }
    }

/听众/

    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Map;
    import java.util.Set;
    import java.util.logging.Logger;

    import org.testng.IResultMap;
    import org.testng.IRetryAnalyzer;
    import org.testng.ISuiteResult;
    import org.testng.ITestContext;
    import org.testng.ITestListener;
    import org.testng.ITestNGListener;
    import org.testng.ITestNGMethod;
    import org.testng.ITestResult;

    public class Listener implements ITestListener  {
        //  RetryFailure oretry= new RetryFailure();

        public Listener() {
            // TODO Auto-generated constructor stub
        }

        public void onTestStart(ITestResult result) {
            System.out.println("test start");


        }

        public void onTestSuccess(ITestResult result) {
            // TODO Auto-generated method stub
            System.out.println("test success");

        }

        public void onTestFailure(ITestResult result) {
            // TODO Auto-generated method stub
            System.out.println("test failure");

        }

        public void onTestSkipped(ITestResult result) {
            // TODO Auto-generated method stub
            System.out.println("test skip");
            //      result.
        }

        public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
            // TODO Auto-generated method stub
            System.out.println("test onTestFailedButWithinSuccessPercentage");

        }

        public void onStart(ITestContext context) {
            // TODO Auto-generated method stub
            System.out.println("test onStart");
            System.out.println(context.getOutputDirectory());
            System.out.println(context.getHost());
            ITestNGMethod[] itest= context.getAllTestMethods();
            for (ITestNGMethod i : itest) {
                System.out.println(i.getMethodName());
                System.out.println(i.getCurrentInvocationCount());
            }

            System.out.println(context.getStartDate());
        }

        public void onFinish(ITestContext context,ITestResult result) {
            System.out.println("test onFinish with failure");
        }

        public void onFinish(ITestContext context) {
            ITestResult result;
            //      result.getTestContext().get
            Integer number =0;
            System.out.println("test onFinish");

            System.out.println(context.getSuite().getResults());
            IResultMap mpassed = context.getPassedTests();
            IResultMap mfailed1 = context.getFailedTests();
            IResultMap mskipped1 = context.getSkippedTests();
            Set<ITestResult> mpassedResults = mpassed.getAllResults();
            Set<ITestResult> mfailed1Results = mfailed1.getAllResults();
            Set<ITestResult> mskippedResults = mskipped1.getAllResults();

            Map<String, ISuiteResult>  suiteres = (context.getSuite().getResults());
            System.out.println(suiteres.keySet().toString());
            System.out.println(suiteres.values().toString());


            mfailed1Results.removeAll(mskippedResults);
            for (ITestResult iTestResult2 : mfailed1Results) {
                System.out.println(iTestResult2.getMethod().getMethodName() + "  Failed Method name");
                if (mpassedResults.size() > 0){
                    if (mpassedResults.contains(iTestResult2.getMethod())) {
                        mfailed1Results.remove(iTestResult2);
                        mskippedResults.remove(iTestResult2);
                    }
                }
                else if (mskippedResults.size() > 0){
                    System.out.println(mskipped1.getAllMethods().toString() + "  skipped Method  name");
                    mskippedResults.remove(iTestResult2);
                    System.out.println(mskippedResults.toString());
                }

            }
        }
    }

/重试分析器/

    public class RetryFailure implements IRetryAnalyzer {

        int retryCount = 0;
        public boolean retry(ITestResult result) {
            System.out.println("retry method");
            final int maxRetryCount = 2;
            if (retryCount < maxRetryCount) {
                System.out.println("retry " + retryCount);
                retryCount = retryCount + 1; 
                return true;
            }
            return false;
        }
    }

/*Retry Listener*/
    public class RetryListener implements IAnnotationTransformer {

        public RetryListener() {
            // TODO Auto-generated constructor stub
        }

        public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) {
            // TODO Auto-generated method stub
            IRetryAnalyzer retry = annotation.getRetryAnalyzer();
            if(retry == null){
                annotation.setRetryAnalyzer(RetryFailure.class);
            }

        }

        public void transform(IConfigurationAnnotation annotation, Class testClass, Constructor testConstructor,
                Method testMethod) {
            // TODO Auto-generated method stub

        }

        public void transform(IDataProviderAnnotation annotation, Method method) {
            // TODO Auto-generated method stub

        }

        public void transform(IFactoryAnnotation annotation, Method method) {
            // TODO Auto-generated method stub

        }

    }

标签: testng

解决方案


推荐阅读