示例#1
0
        /// <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();
        }