简体   繁体   English

为什么在Visual Studio 2012中运行测试时看不到调试输出?

[英]Why I can't see the debug output when I run a test in Visual Studio 2012?

I am very new in C# and Visual Studio (I came from Java) and I have the following doubts about how debug work in Visual Studio. 我是C#和Visual Studio(来自Java)的新手,我对调试在Visual Studio中的工作方式有以下疑问。

So I have this unit test: 所以我有这个单元测试:

    [TestMethod]
    public void GetVulnerability()
    {
        DataModel.VulnerabilityManager manager = new DataModel.VulnerabilityManager("DefaultConnection");

        try
        {
            manager.openConnection();


            List<DataModel.Vulnerability.VulnSmall> risultato;

            DataModel.Vulnerability.SearchVuln model = new DataModel.Vulnerability.SearchVuln();
            model.PageSize = 20;
            /*model.Filter.CVE = "CVE-2013-2902(Candidate)";*/

            int numeroRecordsTotali;

            risultato = manager.getList(model, out numeroRecordsTotali);

            foreach (DataModel.Vulnerability.VulnSmall v in risultato ){
                Debug.WriteLine("MY CVE: " + v.CVE + "**");
            }

        }
        finally
        {

            manager.closeConnection();
        }

So, into the foreach I print the test output by the line 因此,在foreach中,我通过一行打印测试输出

Debug.WriteLine("MY CVE: " + v.CVE + "**")

The thing that I can't understand is that when I go to execute the test clicking on Run selected test voice I can't see the test output that have to be written by my previous line but I can see it if I click on the Debug selected test voice. 我无法理解的是,当我去执行测试时,单击“ 运行选定的测试声音”时,看不到必须由上一行编写的测试输出,但是如果单击调试选定的测试语音。

Why? 为什么? What can I do to show the desidered output (and not only if the test is passed) in Visual Studio debug? 我该怎么做才能在Visual Studio调试中显示期望的输出(不仅是通过测试,还需要显示)?

I think this has to do with the fact that Debug.WriteLine() is tagged with [ConditionalAttribute("DEBUG")] . 我认为这与Debug.WriteLine()被标记为[ConditionalAttribute("DEBUG")]的事实有关。

For all intents and purposes, you may think of it being equivalent to this: 出于所有意图和目的,您可能会认为它等同于以下内容:

public void WriteLine(string message)
{
#if DEBUG
    Console.WriteLine(message);
#endif
}

Now you probably already guessed it, but your tests don't run in debug mode. 现在您可能已经猜到了,但是您的测试不在调试模式下运行。

Solution

Use the Trace class instead of the Debug class. 使用Trace类而不是Debug类。

foreach ( DataModel.Vulnerability.VulnSmall v in risultato )
{
    Trace.WriteLine("MY CVE: " + v.CVE + "**");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 我能否确定Visual Studio 2012何时处于“调试与生产”阶段? - Can I tell when Visual Studio 2012 is in Debug vs Production? 为什么在未安装Visual Studio的计算机中无法运行.NET程序的调试版本 - Why can't I run debug version of .NET program in the machine didn't install visual studio 为什么在Visual Studio 2012中运行此保险计算器时不显示输出? (它调试完美) - Why won't this insurance calculator display output when it's run in Visual Studio 2012? (It debugs perfectly) 如何在Visual Studio 2012中看到Code Lens? - How can I see Code Lens in Visual studio 2012? 在发布配置中运行时,是否应该在Visual Studio的输出窗口中看到调试输出? - Should I see debug outputs In Visual Studio's output window when running in a release configuration? 我在 Microsoft Visual Studio Ultimate 2012 Version 11.0.50727.1 的“表”选项中看不到简单的数据库 - I can't see the simple database in the "Table" option in Microsoft Visual Studio Ultimate 2012 Version 11.0.50727.1 如何从Visual Studio 2012调试引用的dll - How can I debug a referenced dll from Visual Studio 2012 为什么我无法在visual studio 2012 pro中将用户控件加载到我的工具箱? - Why I can't load a user control to my toolbox in visual studio 2012 pro? 为什么我不能在Windows 8中使用Visual Studio 2012将目标框架更改为4.5? - Why can't I change the target framework to 4.5 in Windows 8, using Visual Studio 2012? 为什么我无法在Visual Studio 2012上使用CodeFirst创建数据库? - Why I can't create a database using CodeFirst on Visual Studio 2012?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM