/// <summary> /// Writes the default summary to the given logger. Can be used by other reporters who also wish to write the /// standard summary information. /// </summary> /// <param name="logger">The logger used to send result messages to.</param> /// <param name="executionSummary">The execution summary to display.</param> public static void WriteDefaultSummary(IRunnerLogger logger, ITestExecutionSummary executionSummary) { logger.LogImportantMessage("=== TEST EXECUTION SUMMARY ==="); var totalTestsRun = executionSummary.Summaries.Sum(summary => summary.Value.Total); var totalTestsFailed = executionSummary.Summaries.Sum(summary => summary.Value.Failed); var totalTestsSkipped = executionSummary.Summaries.Sum(summary => summary.Value.Skipped); var totalTime = executionSummary.Summaries.Sum(summary => summary.Value.Time).ToString("0.000s"); var totalErrors = executionSummary.Summaries.Sum(summary => summary.Value.Errors); var longestAssemblyName = executionSummary.Summaries.Max(summary => summary.Key.Length); var longestTotal = totalTestsRun.ToString().Length; var longestFailed = totalTestsFailed.ToString().Length; var longestSkipped = totalTestsSkipped.ToString().Length; var longestTime = totalTime.Length; var longestErrors = totalErrors.ToString().Length; foreach (var summary in executionSummary.Summaries) { if (summary.Value.Total == 0) { logger.LogImportantMessage($" {summary.Key.PadRight(longestAssemblyName)} Total: {"0".PadLeft(longestTotal)}"); } else { logger.LogImportantMessage($" {summary.Key.PadRight(longestAssemblyName)} Total: {summary.Value.Total.ToString().PadLeft(longestTotal)}, Errors: {summary.Value.Errors.ToString().PadLeft(longestErrors)}, Failed: {summary.Value.Failed.ToString().PadLeft(longestFailed)}, Skipped: {summary.Value.Skipped.ToString().PadLeft(longestSkipped)}, Time: {summary.Value.Time.ToString("0.000s").PadLeft(longestTime)}"); } } if (executionSummary.Summaries.Count > 1) { logger.LogImportantMessage($" {" ".PadRight(longestAssemblyName)} {"-".PadRight(longestTotal, '-')} {"-".PadRight(longestErrors, '-')} {"-".PadRight(longestFailed, '-')} {"-".PadRight(longestSkipped, '-')} {"-".PadRight(longestTime, '-')}"); logger.LogImportantMessage($" {"GRAND TOTAL:".PadLeft(longestAssemblyName + 8)} {totalTestsRun} {totalErrors} {totalTestsFailed} {totalTestsSkipped} {totalTime} ({executionSummary.ElapsedClockTime.TotalSeconds.ToString("0.000s")})"); } }
/// <inheritdoc/> protected override bool Visit(ITestExecutionSummary executionSummary) { WriteDefaultSummary(Logger, executionSummary); return(base.Visit(executionSummary)); }
protected override bool Visit(ITestExecutionSummary executionSummary) => true;
/// <summary> /// Called when an instance of <see cref="ITestExecutionSummary"/> is sent to the message sink. /// </summary> /// <param name="executionSummary">The message.</param> /// <returns>Return <c>true</c> to continue executing tests; <c>false</c> otherwise.</returns> protected virtual bool Visit(ITestExecutionSummary executionSummary) { return(true); }
/// <summary> /// Writes the default summary to the given logger. Can be used by other reporters who also wish to write the /// standard summary information. /// </summary> /// <param name="logger">The logger used to send result messages to.</param> /// <param name="executionSummary">The execution summary to display.</param> public static void WriteDefaultSummary(IRunnerLogger logger, ITestExecutionSummary executionSummary) { logger.LogImportantMessage("=== TEST EXECUTION SUMMARY ==="); var totalTestsRun = executionSummary.Summaries.Sum(summary => summary.Value.Total); var totalTestsFailed = executionSummary.Summaries.Sum(summary => summary.Value.Failed); var totalTestsSkipped = executionSummary.Summaries.Sum(summary => summary.Value.Skipped); var totalTime = executionSummary.Summaries.Sum(summary => summary.Value.Time).ToString("0.000s"); var totalErrors = executionSummary.Summaries.Sum(summary => summary.Value.Errors); var longestAssemblyName = executionSummary.Summaries.Max(summary => summary.Key.Length); var longestTotal = totalTestsRun.ToString().Length; var longestFailed = totalTestsFailed.ToString().Length; var longestSkipped = totalTestsSkipped.ToString().Length; var longestTime = totalTime.Length; var longestErrors = totalErrors.ToString().Length; foreach (var summary in executionSummary.Summaries) { if (summary.Value.Total == 0) logger.LogImportantMessage($" {summary.Key.PadRight(longestAssemblyName)} Total: {"0".PadLeft(longestTotal)}"); else logger.LogImportantMessage($" {summary.Key.PadRight(longestAssemblyName)} Total: {summary.Value.Total.ToString().PadLeft(longestTotal)}, Errors: {summary.Value.Errors.ToString().PadLeft(longestErrors)}, Failed: {summary.Value.Failed.ToString().PadLeft(longestFailed)}, Skipped: {summary.Value.Skipped.ToString().PadLeft(longestSkipped)}, Time: {summary.Value.Time.ToString("0.000s").PadLeft(longestTime)}"); } if (executionSummary.Summaries.Count > 1) { logger.LogImportantMessage($" {" ".PadRight(longestAssemblyName)} {"-".PadRight(longestTotal, '-')} {"-".PadRight(longestErrors, '-')} {"-".PadRight(longestFailed, '-')} {"-".PadRight(longestSkipped, '-')} {"-".PadRight(longestTime, '-')}"); logger.LogImportantMessage($" {"GRAND TOTAL:".PadLeft(longestAssemblyName + 8)} {totalTestsRun} {totalErrors} {totalTestsFailed} {totalTestsSkipped} {totalTime} ({executionSummary.ElapsedClockTime.TotalSeconds.ToString("0.000s")})"); } }
/// <inheritdoc/> protected override bool Visit(ITestExecutionSummary executionSummary) { WriteDefaultSummary(Logger, executionSummary); return base.Visit(executionSummary); }
protected override bool Visit(ITestExecutionSummary executionSummary) { return(true); }
protected override bool Visit(ITestExecutionSummary executionSummary) { return true; }