// Go through all the results and create a TestResult for each of them
//
List<ITestResult> resultsToRetry = new ArrayList<ITestResult>();
for (int i = 0; i < result.size(); i++) {
ITestResult testResult = result.get(i);
Throwable ite= testResult.getThrowable();
int status= testResult.getStatus();
// Exception thrown?
if(ite != null) {
// Invocation caused an exception, see if the method was annotated with @ExpectedException
if(isExpectedException(ite, expectedExceptionClasses)) {
testResult.setStatus(ITestResult.SUCCESS);
status= ITestResult.SUCCESS;
}
else if (SkipException.class.isAssignableFrom(ite.getClass())){
SkipException skipEx= (SkipException) ite;
if(skipEx.isSkip()) {
status= ITestResult.SKIP;
}
else {
handleException(ite, testMethod, testResult, failureCount++);
status= ITestResult.FAILURE;
}
}
else {
handleException(ite, testMethod, testResult, failureCount++);
status= testResult.getStatus();
}
}
// No exception thrown, make sure we weren't expecting one
else if(status != ITestResult.SKIP) {
if (expectedExceptionClasses.length > 0) {
testResult.setThrowable(
new TestException("Expected an exception in test method " + testMethod));
status= ITestResult.FAILURE;
}
}
testResult.setStatus(status);
boolean retry = false;
if (testResult.getStatus() == ITestResult.FAILURE) {
IRetryAnalyzer retryAnalyzer = testMethod.getRetryAnalyzer();
if (retryAnalyzer != null) {
retry = retryAnalyzer.retry(testResult);
}
if (retry) {
resultsToRetry.add(testResult);
if (failedInstances != null) {
failedInstances.add(testResult.getMethod().getInstances()[i]);
}
}
}
if (!retry) {
// Collect the results