[ 
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)

Reply via email to