public void WriteSummaryReport() { ColorStyle overall = OverallResult == "Passed" ? ColorStyle.Pass : OverallResult == "Failed" || OverallResult == "Unknown" ? ColorStyle.Failure : OverallResult == "Warning" ? ColorStyle.Warning : ColorStyle.Output; Writer.WriteLine(ColorStyle.SectionHeader, "Test Run Summary"); Writer.WriteLabelLine(" Overall result: ", OverallResult, overall); WriteSummaryCount(" Test Count: ", Summary.TestCount); WriteSummaryCount(", Passed: ", Summary.PassCount); WriteSummaryCount(", Failed: ", Summary.FailedCount, ColorStyle.Failure); WriteSummaryCount(", Warnings: ", Summary.WarningCount, ColorStyle.Warning); WriteSummaryCount(", Inconclusive: ", Summary.InconclusiveCount); WriteSummaryCount(", Skipped: ", Summary.TotalSkipCount); Writer.WriteLine(); if (Summary.FailedCount > 0) { WriteSummaryCount(" Failed Tests - Failures: ", Summary.FailureCount); WriteSummaryCount(", Errors: ", Summary.ErrorCount, ColorStyle.Error); WriteSummaryCount(", Invalid: ", Summary.InvalidCount); Writer.WriteLine(); } if (Summary.TotalSkipCount > 0) { WriteSummaryCount(" Skipped Tests - Ignored: ", Summary.IgnoreCount); WriteSummaryCount(", Explicit: ", Summary.ExplicitCount); WriteSummaryCount(", Other: ", Summary.SkipCount); Writer.WriteLine(); } var duration = ResultNode.GetAttribute("duration", 0.0); var startTime = ResultNode.GetAttribute("start-time", DateTime.MinValue); var endTime = ResultNode.GetAttribute("end-time", DateTime.MaxValue); Writer.WriteLabelLine(" Start time: ", startTime.ToString("u")); Writer.WriteLabelLine(" End time: ", endTime.ToString("u")); Writer.WriteLabelLine(" Duration: ", string.Format(NumberFormatInfo.InvariantInfo, "{0:0.000} seconds", duration)); Writer.WriteLine(); }