public void RunTests(IEnumerable <TestCase> testCasesToRun, bool isBeingDebugged, IDebuggedProcessExecutorFactory processExecutorFactory) { IDictionary <string, List <TestCase> > groupedTestCases = testCasesToRun.GroupByExecutable(); foreach (string executable in groupedTestCases.Keys) { if (_canceled) { break; } _settings.ExecuteWithSettingsForExecutable(executable, _logger, () => { string workingDir = _settings.GetWorkingDirForExecution(executable, _testDir, _threadId); string userParameters = _settings.GetUserParametersForExecution(executable, _testDir, _threadId); IDictionary <string, string> environmentVariables = _settings.GetEnvironmentVariablesForExecution(executable, _testDir, _threadId); RunTestsFromExecutable( executable, workingDir, groupedTestCases[executable], userParameters, environmentVariables, isBeingDebugged, processExecutorFactory); }); } }