Visual Studio Express 2013:单元测试中的程序输出(控制台,调试等)

时间:2014-09-11 08:54:05

标签: c# unit-testing visual-studio-2013 output visual-studio-express

我真的把头靠在墙上。在Visual Studio(Express 2013)中获取程序输出是如此困难吗?在编写代码时,我发现在工作和故障排除时能够打印出变量,操作等的值是绝对必要的。

在Java和Eclipse中,System.out.println()总是有效,打印到IDE控制台。在编写C程序时,我总是使用控制台,所以回声任何事都没问题。但是,在VS Express 2013中,我似乎无法获得任何输出。

问题可能与我正在编写单元测试而不是“正常”可执行程序这一事实有关吗?如果是这样,有没有办法让VS在单元测试类中显示程序输出?我尝试过使用调试,但这也没有显示任何内容。认为存在配置问题,我已经找到了调试未显示的消息的解决方案,但我找到的任何选项(在这里或其他地方)都没有帮助。

或者,当然 - 如果在VS / C#中编写代码时还有另一种常用的方法来检查程序值,输出等,我想听听它: - )

有人有任何想法吗?如果问题太不明确或者其他问题,请告诉我,我会解决它。

注意:我正在使用单元测试类进行功能测试,以防有人想指出我应该做什么和不应该做单元测试。

编辑1:我忘了提到我无法使用“Start:Debug”运行代码。如果我尝试,我会收到此错误:“无法直接启动具有类库输出类型的项目。” (单元测试项目使用另一个项目中的类,我是一个类库项目。)当然,这是因为我在解决方案中没有可执行项目。我运行它的方法是从Test Explorer中运行选定的测试。

编辑2:代码:

using System;
using System.Diagnostics;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using WordpressAutomation;

namespace WordpressTests
{

    [TestClass]
    public class LoginTests : WordpressTest {

        [TestMethod]
        public void AdminUserCanLogIn() {

            System.Diagnostics.Debug.WriteLine("Something...");
            System.Diagnostics.Trace.WriteLine("Something...");
        }
    }
}

7 个答案:

答案 0 :(得分:34)

Visual Studio的TestExplorer有一个单独的输出窗口。它不会写入默认的Visual Studio输出(我不知道它是否可配置)

您必须在TestExplorer中选择要查看输出的测试。如果Test有一些输出,你应该看到一个超链接“输出”。单击它将打开一个显示测试输出的新选项卡。

enter image description here

显示的消息全部由Console.WriteLine写入。

我使用的是Visual Studio 2013 Professional。我不确定Express版本是否有效。

答案 1 :(得分:6)

System.Diagnostics.Debug.WriteLine("Yay!");

如果您将“输出”窗口配置为显示调试数据,则会显示在那里。

来源:Visual Studio 2010 Express. Write to the output window(适用于VS 2010,但它也适用于2013,因为这是一个框架选项,而不是IDE选项。)

答案 2 :(得分:4)

我真的不喜欢回答我自己的问题,因为它似乎有点“不诚实”。然而,它已经安静了一段时间,我认为还没有其他答案。

最实用的解决方案是创建另一个项目,例如控制台项目,您可以在其中创建所有输出。它可能无法直接与单元测试通信,但由于我在此特定示例中开发的测试框架包含与类库进行对话的功能测试,因此可以在解决方案中使用单独的项目。

总而言之,解决方案包括: - 单元测试项目,包括实际测试 - 具有框架逻辑的类库项目 - 用于测试类库中的类或单元测试项目中的非单元测试类的控制台项目。

答案 3 :(得分:2)

我认为你应该使用 log ,而不是像这样的情况控制台输出。您可以配置日志输出到文件,甚至输出到您指定的窗口。我相信你可以在没有控制台的情况下使用日志,你可以配置日志,只有生产中出现警告或错误,并且在调试会话期间可以显示调试信息。

我使用log4j,这里可以使用任何好的日志软件。

答案 4 :(得分:1)

您应该利用日志框架来执行此类操作。从日志记录框架中,您可以选择登录到控制台,平面文件或许多其他数据接收器,或者您可以告诉框架忽略输入。良好的日志框架非常易于配置。

在.NET领域,社区最爱似乎是NLog,http://nlog-project.org/。 "入门"链接会让你去。

答案 5 :(得分:0)

我不确定VS2013,但在VS2008中,如果双击测试结果摘要(完成后,通过或失败),它将打开一个窗口,其中包含" Common Results& #34;,"错误消息"等最后跟随"标准控制台输出"。它基本上可以很好地单独捕获每个测试的控制台输出。唯一的缺点是它没有实时显示输出。它只会在完成后显示。

答案 6 :(得分:0)

  

无法启动具有类库的输出类型的项目   直接

一个人不运行或调试单元测试项目。一个通过在Test Explorer窗口中选择一个或多个测试来启动测试会话。或者通过右键单击并选择Run TestsDebug Tests来使用单元测试方法。

使用Console.WriteLineDebug.WriteLine根据需要输出信息性消息,并在单元测试结果的Output链接中查找。

相关问题