/// <summary> /// Creates an analysis result communicating that an unsuccessful test run occurred. /// </summary> /// <param name="previousResults"> /// The previous run that may have failed. /// </param> /// <returns></returns> public static AnalysisResult UnsuccessfulTestRun(ITestRunResult previousResults, ITestRunResult currentResults) { if (previousResults == null) { throw new ArgumentNullException("previousResults"); } if (currentResults == null) { throw new ArgumentNullException("currentResults"); } if (previousResults.Success && currentResults.Success) { throw new ArgumentException("Bad input on unsuccessful test run factory method: both runs are successful!"); } string message; if (!previousResults.Success && !currentResults.Success) { message = BothRunsUnsuccessfulMessage + System.Environment.NewLine + System.Environment.NewLine + currentResults.Target.Location + System.Environment.NewLine + previousResults.Target.Location; } else { message = SingleRunUnsuccessfulMessage + System.Environment.NewLine + System.Environment.NewLine + (previousResults.Success ? currentResults.Target.Location : previousResults.Target.Location); } return new InconclusiveAnalysisResult(message); }
private static LineCoverage[] GetCoverage(TestFixtureDetails testFixtureDetails, CompiledTestFixtureInfo compiledTestFixtureInfo, string testProjectName, ITestRunResult[] results) { var coverage = new List<LineCoverage>(results.Length); foreach (var testRunResult in results) { var methodSyntaxNode = testFixtureDetails.Cases. FirstOrDefault(x => x.MethodName == testRunResult.TestName)?.SyntaxNode; var partialCoverage = testRunResult.GetCoverage(methodSyntaxNode, testProjectName, compiledTestFixtureInfo.TestDocumentPath); coverage.AddRange(partialCoverage); } return coverage.OrderBy(x => x.TestPath).ToArray(); }