簡體   English   中英

為什么在Visual Studio 2012中運行測試時看不到調試輸出?

[英]Why I can't see the debug output when I run a test in 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調試中顯示期望的輸出(不僅是通過測試,還需要顯示)?

我認為這與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 + "**");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM