diff --git a/src/vstest.console/Internal/ConsoleLogger.cs b/src/vstest.console/Internal/ConsoleLogger.cs index 40eaabe21c..4174183fb3 100644 --- a/src/vstest.console/Internal/ConsoleLogger.cs +++ b/src/vstest.console/Internal/ConsoleLogger.cs @@ -263,6 +263,19 @@ private static void DisplayFullInformation(TestResult result) } } + var DbgTrcMessagesCollection = GetTestMessages(result.Messages, TestResultMessage.DebugTraceCategory); + if (DbgTrcMessagesCollection.Count > 0) + { + addAdditionalNewLine = false; + var dbgTrcMessages = GetFormattedOutput(DbgTrcMessagesCollection); + + if (!string.IsNullOrEmpty(dbgTrcMessages)) + { + Output.Information(CommandLineResources.DbgTrcMessagesBanner); + Output.Information(dbgTrcMessages); + } + } + var addnlInfoMessagesCollection = GetTestMessages(result.Messages, TestResultMessage.AdditionalInfoCategory); if (addnlInfoMessagesCollection.Count > 0) { @@ -275,6 +288,7 @@ private static void DisplayFullInformation(TestResult result) Output.Information(addnlInfoMessages); } } + if (addAdditionalNewLine) { Output.WriteLine(String.Empty, OutputLevel.Information); @@ -354,6 +368,7 @@ private void TestResultHandler(object sender, TestResultEventArgs e) { var output = string.Format(CultureInfo.CurrentCulture, CommandLineResources.PassedTestIndicator, name); Output.Information(output); + DisplayFullInformation(e.Result); } this.testsPassed++; } diff --git a/src/vstest.console/Resources/Resources.Designer.cs b/src/vstest.console/Resources/Resources.Designer.cs index eb7f27b97f..101f81b179 100644 --- a/src/vstest.console/Resources/Resources.Designer.cs +++ b/src/vstest.console/Resources/Resources.Designer.cs @@ -1453,6 +1453,17 @@ public static string StdOutMessagesBanner } } + /// + /// Looks up a localized string similar to Debug Traces Messages:. + /// + public static string DbgTrcMessagesBanner + { + get + { + return ResourceManager.GetString("DbgTrcMessagesBanner", resourceCulture); + } + } + /// /// Looks up a localized string similar to Additionally, you can try specifying '/UseVsixExtensions' command if the test discoverer & executor is installed on the machine as vsix extensions and your installation supports vsix extensions. Example: vstest.console.exe myTests.dll /UseVsixExtensions:true. /// diff --git a/src/vstest.console/Resources/Resources.resx b/src/vstest.console/Resources/Resources.resx index 66d6914ac4..ca40f7e946 100644 --- a/src/vstest.console/Resources/Resources.resx +++ b/src/vstest.console/Resources/Resources.resx @@ -652,4 +652,7 @@ The Data Collector friendly name '{0}' is not valid. The Data Collector will be ignored. + + Debug Traces Messages: + \ No newline at end of file diff --git a/test/vstest.console.UnitTests/Internal/ConsoleLoggerTests.cs b/test/vstest.console.UnitTests/Internal/ConsoleLoggerTests.cs index 7ed71f56f8..ec16a179bd 100644 --- a/test/vstest.console.UnitTests/Internal/ConsoleLoggerTests.cs +++ b/test/vstest.console.UnitTests/Internal/ConsoleLoggerTests.cs @@ -314,6 +314,59 @@ public void TestResultHandlerShouldWriteToConsoleShouldShowPassedTestsForNormalV this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.NotRunTestIndicator, "TestName"), OutputLevel.Information), Times.Exactly(2)); } + [TestMethod] + public void TestResultHandlerShouldShowStdOutMsgOfPassedTestIfVerbosityIsNormal() + { + var parameters = new Dictionary(); + parameters.Add("verbosity", "normal"); + this.consoleLogger.Initialize(this.events.Object, parameters); + + var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); + + string message = "Dummy message"; + TestResultMessage testResultMessage = new TestResultMessage(TestResultMessage.StandardOutCategory, message); + + var testresult = new ObjectModel.TestResult(testcase); + testresult.Outcome = TestOutcome.Passed; + testresult.Messages.Add(testResultMessage); + + var eventArgs = new TestRunChangedEventArgs(null, new List { testresult }, null); + + // Raise an event on mock object + this.testRunRequest.Raise(m => m.OnRunStatsChange += null, eventArgs); + this.FlushLoggerMessages(); + + this.mockOutput.Verify(o => o.WriteLine(CommandLineResources.StdOutMessagesBanner, OutputLevel.Information), Times.Once()); + this.mockOutput.Verify(o => o.WriteLine(" " + message, OutputLevel.Information), Times.Once()); + } + + [TestMethod] + public void TestResultHandlerShouldShowDbgTrcMsg() + { + var parameters = new Dictionary(); + parameters.Add("verbosity", "normal"); + this.consoleLogger.Initialize(this.events.Object, parameters); + + var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); + + string message = "Dummy message"; + TestResultMessage testResultMessage = new TestResultMessage(TestResultMessage.DebugTraceCategory, message); + + var testresult = new ObjectModel.TestResult(testcase); + testresult.Outcome = TestOutcome.Passed; + testresult.Messages.Add(testResultMessage); + + var eventArgs = new TestRunChangedEventArgs(null, new List { testresult }, null); + + // Raise an event on mock object + this.testRunRequest.Raise(m => m.OnRunStatsChange += null, eventArgs); + this.FlushLoggerMessages(); + + this.mockOutput.Verify(o => o.WriteLine(CommandLineResources.DbgTrcMessagesBanner, OutputLevel.Information), Times.Once()); + this.mockOutput.Verify(o => o.WriteLine(" " + message, OutputLevel.Information), Times.Once()); + } + + [TestMethod] public void TestResultHandlerShouldWriteToConsoleButSkipPassedTestsForMinimalVerbosity() {