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

时间:2014-02-19 10:18:00

标签: c# visual-studio visual-studio-2012

我是C#和Visual Studio(我来自Java)的新手,我对Visual Studio中的调试工作有以下疑问。

所以我有这个单元测试:

    [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();
        }

因此,进入 foreach ,我按行打印测试输出

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

我无法理解的是,当我单击运行选定的测试语音执行测试时,我看不到必须由我前一行写的测试输出但是如果我点击调试选择的测试语音,我就能看到它。

为什么呢?如何在Visual Studio调试中显示所需的输出(而不仅仅是测试通过)?

1 个答案:

答案 0 :(得分:3)

我认为这与Debug.WriteLine()[ConditionalAttribute("DEBUG")]标记的事实有关。

出于所有意图和目的,您可能会认为它等同于:

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

现在你可能已经猜到了,但你的测试不能在调试模式下运行。

<强>解决方案

使用Trace类而不是Debug类。

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