private void OnTestError(ISolutionProjectModel projectViewModel, MsTestCommand command, string errors, bool cancelOnFailures) { lock (lockObj) { if (projectViewModel.CurrentOperation != null && !string.IsNullOrEmpty(errors)) { projectViewModel.CurrentOperation.ColorBrush = Brushes.DarkRed; } if (!string.IsNullOrEmpty(errors)) { foreach (MsTestError error in MsTestError.Parse(errors)) { UnitTestInfo testInfo = command.UnitTests.First(info => info.TestMethodName == error.TestName); string fileName = error.TestName; if (testInfo.ProjectFileItem != null && testInfo.ProjectFileItem.GetFile().Exists) { fileName = testInfo.ProjectFileItem.GetFile().FullName; } Output.WriteError($"{error.TestName}={error.ErrorMessage}", fileName, testInfo.Line, testInfo.Column, null, TaskCategory.User, testInfo.Project.FullPath, File.Exists(fileName)); } Output.WriteLine(errors); if (cancelOnFailures) { serviceProvider.Get <MainViewModel>().CompleteCancelCommand.Execute(null); } } } }
private KeyValuePair <TestRun, List <MsTestError> > OpenTestResultFileAndGetResults(Project project, string fileName) { if (File.Exists(fileName)) { VisualStudioDTE.TryOpenFile(fileName); var run = TestRun.LoadFromFile(fileName); List <MsTestError> failedTests = MsTestError.FromTestRun(run).ToList(); foreach (var error in failedTests) { Output.WriteError($"{error.TestName}={error.ErrorMessage}", error.TestPath, error.Line, 0, null, TaskCategory.User, project.FullPath, File.Exists(error.TestPath), false); } SetTestRunOnResultsWindowToIndex(1); // Alle läufe in einem ergebis fenster zeigen return(new KeyValuePair <TestRun, List <MsTestError> >(run, failedTests)); } return(new KeyValuePair <TestRun, List <MsTestError> >(null, new List <MsTestError>())); }