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);
        }