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

Fra*_* H. 15 c# unit-testing visual-studio-express output visual-studio-2013

我真是在这里撞墙.在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...");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Jeh*_*hof 34

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

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

在此输入图像描述

显示的消息都是由Console.WriteLine.

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

  • 嗯,这似乎并没有在vs2015企业中运作 (2认同)

Nza*_*all 6

System.Diagnostics.Debug.WriteLine("Yay!");
Run Code Online (Sandbox Code Playgroud)

如果将"输出"窗口配置为显示调试数据,则会在其中显示.

来源:Visual Studio 2010 Express.写入输出窗口(适用于VS 2010,但它也适用于2013,因为这是一个框架选项,而不是IDE选项).


Fra*_* H. 3

我不太喜欢回答自己的问题,因为这看起来有点“不诚实”。不过,已经沉寂了一段时间了,我想也没有其他答案了。

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

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