【问题标题】:How to Console.WriteLine from [TestMethod]? [duplicate]如何从 [TestMethod] Console.WriteLine? [复制]
【发布时间】:2011-09-18 13:36:15
【问题描述】:

我正在尝试显示 [TestMethod] 方法的一些信息。

通常我们使用 NUnit 并且带有 Console.WriteLine 的行运行良好,我们可以在“输出”窗口中看到它,但是在这个项目中,我们必须使用嵌入 VS2010 的测试工具和 Console.WriteLine 不运行,因为我们什么都看不到。

我想要的是或多或少地以这种方式在“输出”窗口上显示跟踪消息:

using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;


namespace Test1
{
    [TestClass]
    public class TestNum1
    {
        [TestMethod]
        public void Constructors()
        {
            for (int b = 1; b < 99; b++) {
                Console.WriteLine(b.ToString());  // <<<<<<< This don't show on Output.
                Assert.AreEqual(b, b);  // This is only a silly sample.
            }
        }
    }
}

【问题讨论】:

  • 是的,你是对的。抱歉我的重复问题,但我必须添加一个注释:您必须在调试模式下执行测试,否则您看不到任何输出。

标签: c# visual-studio-2010 testing


【解决方案1】:

你应该用System.Diagnostics.Debug.WriteLine(...)替换Console.WriteLine

您将在 Visual Studio 调试输出窗口中看到输出。

编辑:现在才发现这是一个重复的问题,请看这里:

How to write to Console.Out during execution of an MSTest test

【讨论】:

  • 嗨@Davide Piras,我已将Console.WriteLine 更改为System.Diagnostics.Debug.WriteLine,但在输出窗口中仍然看不到任何内容。
  • 好的.. 我已经看到我必须在调试模式下执行测试,否则我什么都看不到。
  • 您必须在调试模式下执行测试当且仅当您使用 Debug.WriteLine - 如果使用 Trace.WriteLine 您可以使用任何构建风格 - 包括发布
  • 感谢@rudolf_franek,但我无法用Trace.WriteLine 显示任何内容。它仅在调试模式下显示文本(如Debug.WriteLine)。当然我做错了什么。
  • @Davide Piras 是对的 - 使用 Trace.Listeners.Add 添加现有的侦听器类型或创建自己的类型,如果您需要一些非常特别的东西。最简单的标准方法是: Trace.Listeners.Add(new System.Diagnostics.DefaultTraceListener());
【解决方案2】:

您可以使用testContextInstance.WriteLine(string s);

【讨论】:

  • 很高兴知道应该从哪里来。
  • @Akku,只需将public TestContext TestContext { get; set; } 添加到您的班级即可。测试运行器会为您填充它。您也可以将其作为ClassInitializeAssemblyInitialize 方法的参数接收。
  • 正是我想要的!将文本直接输出到测试结果窗口 - 完美!
  • 这就是我想要的。它显示在测试资源管理器输出窗口中(VS 测试资源管理器底部的输出链接)。
  • @Sam 具有 TextContext 属性 getter/setter 确实是一个答案。太糟糕了,它作为评论被埋没了
【解决方案3】:

您可以通过运行带有选项/detail:stdoutMSTest 命令行来强制显示Console.WriteLine()

例如:

MSTEST /testcontainer:MyDllToTest.dll /testSettings.local.TestSettings /detail:stdout

(注意我使用/testSettings 来防止在 testResults 目录中复制(部署)DLL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-09
    • 2012-03-14
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多