[ https://issues.apache.org/jira/browse/MNG-5872?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Osipov updated MNG-5872: -------------------------------- Fix Version/s: wontfix-candidate > Maven results are wrong after rerun test cases by RetryListeners > ---------------------------------------------------------------- > > Key: MNG-5872 > URL: https://issues.apache.org/jira/browse/MNG-5872 > Project: Maven > Issue Type: Bug > Components: Errors > Reporter: Vishnu > Priority: Major > Fix For: waiting-for-feedback, wontfix-candidate > > > I am getting wrong result count after re-run the failed test case using > RetryListener. > Environment details: > Java, > Selenium with TestNG > Chrome browser > Maven mode execution > Total Running Test case : 1 > Simulation: > 1. Have added Listener class in TestNG and running test case using maven > <listeners> > <listener class-name="<Package>.RetryListener" /> > </listeners> > 2. Made test case failed and it invoked failed test case and 2nd time, it got > passed. The results would be as follows; > Expected Results ==> Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 > (Correct) > Actual Results ==> Tests run: 2, Failures: 0, Errors: 0, Skipped: 0 (Wrong) > I've used below classes for Listeners and calling RetryListener class from > TestNG.xml and executing them from Maven mode. > IRetryAnalyzer class: > public class RetryAnalyzer implements IRetryAnalyzer { > private int retryCount = 0; > private int retryMaxCount = 1; > > public RetryAnalyzer() { > setCount(retryMaxCount); > } > @Override > public boolean retry(ITestResult result) { > if (!result.isSuccess()) { > if (retryCount < retryMaxCount) { > retryCount++; > result.setStatus(ITestResult.SUCCESS); > String message = Thread.currentThread().getName() + ": Error in > " + result.getName() + " Retrying " > + (retryMaxCount + 1 - retryCount) + " more time(s)"; > System.out.println(message); > Reporter.log(message); > return true; > } else { > result.setStatus(ITestResult.FAILURE); > } > } > return false; > } > > public void setCount(int count) { > retryMaxCount = count; > } > RetryLister Class: > public class RetryListener implements IAnnotationTransformer { > @SuppressWarnings("rawtypes") > @Override > public void transform(ITestAnnotation arg0, Class arg1, Constructor > arg2, > Method arg3) { > IRetryAnalyzer retry = arg0.getRetryAnalyzer(); > if (retry == null) { > arg0.setRetryAnalyzer(RetryAnalyzer.class); > } > } > > public void onFinish(ITestContext context) { > Iterator<ITestResult> failedTestCases > =context.getFailedTests().getAllResults().iterator(); > while (failedTestCases.hasNext()) { > System.out.println("failedTestCases"); > ITestResult failedTestCase = failedTestCases.next(); > ITestNGMethod method = failedTestCase.getMethod(); > if (context.getFailedTests().getResults(method).size() > 1) { > System.out.println("failed test case remove as dup:" + > failedTestCase.getTestClass().toString()); > failedTestCases.remove(); > } else { > if (context.getPassedTests().getResults(method).size() > 0) > { > System.out.println("failed test case remove as pass > retry:" + failedTestCase.getTestClass().toString()); > failedTestCases.remove(); > } > } > } > } -- This message was sent by Atlassian JIRA (v7.6.14#76016)