【问题标题】:How to the see output from unit-tests in the Test-Result window in VS2010?如何在 VS2010 的测试结果窗口中查看单元测试的输出?
【发布时间】:2011-05-13 09:33:54
【问题描述】:

我是单元测试的新手,我想查看测试的输出。

假设我正在测试某些对象的存在:

List<MyObject> actual = target.GetMyObjects();
Assert.IsTrue(actual.Count > 0, String.Format("{0} objectes fetched", actual.Count));

在 VS2010 的“测试结果”窗口中,我想查看“String.Format("{0} objectes fetched", actual.Count)”的结果。
这可能吗?

【问题讨论】:

    标签: c# visual-studio-2010 unit-testing


    【解决方案1】:

    找到了:
    我在测试结果窗口中添加了Output(StdOut) 列。

    我把测试方法的结尾改成了这样:

    bool success = actual.Count > 0;
    Assert.IsTrue(success, "No models in the database");
    if (success) 
    {
       Console.Write(String.Format("{0} models fetched", actual.Count));
    }
    

    【讨论】:

      【解决方案2】:

      是的,这是可能的。如果测试失败,您在第二个参数中输入的任何消息都可能有用。在您的情况下,如果计数值对您调试错误很重要,请继续执行。 即使测试失败或成功,稍后在调试此信息时会自动执行此信息可能会有所帮助。 http://www.creatingsoftware.net/2010/03/best-practices-for-assert-statements-in.html

      【讨论】:

      • 那么,如果测试成功,如何在测试结果窗口中看到我的消息?
      【解决方案3】:

      你也可以使用

      Debug.Print("whatever");
      

      然后,当您运行测试时,您会在成功/失败窗口中获得一个超链接“输出”,该窗口将显示您的所有调试消息。

      显然你需要添加

      Using System.Diagnostics; 
      

      Dom

      【讨论】:

        【解决方案4】:

        不,你不想看到输出。

        每个单元测试要么成功要么失败。这使测试运行者能够将测试结果汇总为单个 Fail/Pass 测试结果。如果需要人工检查,单元测试的意义就丢失了——它必须是自动化的。

        【讨论】:

        • 是的,我希望测试成功。我也希望它在测试结果窗口中看到这个输出。我已经将几个测试分组到一个有序的测试中,但我部分希望从他们那里得到反馈,比如在这种情况下,测试是否存在项目。不需要人工检查,但是如果我看一下测试并查看项目数量,即我希望看到的信息
        • 无法从断言中获取输出,但可以使用 Console.WriteLine:blogs.msdn.com/b/ploeh/archive/2007/10/06/…
        • 从长远来看,您不想看到输出。但是,当您编写测试时,有时输出对于理解由于非显而易见的原因而失败的测试非常有用。
        猜你喜欢
        • 2019-01-30
        • 2021-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多