public override TestResult Execute(TestExecutionContext context)
{
int count = _retryCount;
while (count-- > 0)
{
try
{
context.CurrentResult = innerCommand.Execute(context);
}
catch (Exception ex)
{
if (context.CurrentResult == null) context.CurrentResult = context.CurrentTest.MakeTestResult();
// If this is the first time that the test failed, I would like to generate a nunit xml report and save it with a fake name (Failed-"NameOfTheTest")
context.CurrentResult.RecordException(ex);
}
if (context.CurrentResult.ResultState != ResultState.Error
&& context.CurrentResult.ResultState != ResultState.Failure
&& context.CurrentResult.ResultState != ResultState.SetUpError
&& context.CurrentResult.ResultState != ResultState.SetUpFailure
&& context.CurrentResult.ResultState != ResultState.TearDownError
&& context.CurrentResult.ResultState != ResultState.ChildFailure)
break;
// Clear result for retry
if (count > 0)
{
context.CurrentResult = context.CurrentTest.MakeTestResult();
context.CurrentRepeatCount++; // increment Retry count for next iteration. will only happen if we are guaranteed another iteration
}
}
return context.CurrentResult;
}