private void runTest(ITestRunner runner, PreProcessedTesRuns preProcessed, RunReport report) { var testRunInfos = new List <TestRunInfo>(); foreach (var runInfo in preProcessed.RunInfos) { if (_testAssemblyValidator.ShouldNotTestAssembly(runInfo.Assembly)) { return; } if (runner.CanHandleTestFor(runInfo.Assembly)) { testRunInfos.Add(runInfo.CloneToTestRunInfo()); _bus.Publish(new RunInformationMessage(InformationType.TestRun, "", runInfo.Assembly, runner.GetType())); } } if (testRunInfos.Count == 0) { return; } var results = runner.RunTests(testRunInfos.ToArray(), preProcessed.ProcessWrapper, () => { return(_exit); }); if (_exit) { return; } mergeReport(results, report, testRunInfos.ToArray()); reRunTests(runner, report, testRunInfos, preProcessed.ProcessWrapper); }