2009-08-05 33 views
10

在NUnit中,我習慣於在測試中編寫Trace語句,並讓它們顯示在NUnit gui的跟蹤選項卡中。Visual Studio測試中的跟蹤(從NUnit遷移)

在一個新項目上,我將轉向Visual Studio Professional Addition中的內置單元測試,我相信這是與mstest.exe的接口。

測試代碼:

<TestMethod()> 
Public Sub TestPagesInheritFromBasePage() 
    Dim webUI As Assembly = Assembly.GetAssembly(GetType(WebUI.BasePage)) 
    Dim badPages As New List(Of String) 
    For Each t As Type In webUI.GetTypes() 
     Debug.Write(t.Name + ", ") 
     Trace.Write(t.Name + ", ") 
     If t.BaseType Is GetType(System.Web.UI.Page) Then badPages.Add(t.Name) 
    Next 
    Debug.Flush() 
    Trace.Flush() 
    If badPages.Count > 0 Then 
     Assert.Fail("{0}: do not inheriting from BasePage", String.Join(", ", badPages.ToArray())) 
    End If 
End Sub 

我得到一個失敗,所以我知道Debug.Write和Trace.Write線執行。

我已經通過MSDN文檔閱讀寫作這些測試,如果在命令行中執行,我可以查看跟蹤輸出,通過:

mstest.exe /testcontainer:mydll.dll /detail:debugtrace 

但是,我找不到跟蹤輸出時直接在Visual Studio中執行測試。在單元測試期間是否有另一個首選的輸出信息的方法,或者我錯過了在Visual Studio中查看跟蹤信息的選項?

答: 都低於(Console.Write和Debug.Write)工作的答案,結果測試結果詳細信息(TestResult中窗格底部,右鍵單擊測試結果,然後轉到TestResultDetails) 。另外,我在項目屬性中設置了調試和跟蹤常量。

回答

10

通常我用這個方法在Visual Studio中的輸出窗口打印的東西:

System.Diagnostics.Debug.WriteLine("Message"); 
+1

它仍然沒有顯示在輸出中。我已經嘗試通過測試來運行測試和調試。我調用Debug.Flush(),並將輸出窗口設置爲顯示調試輸出。任何想法我在這裏失蹤? – 2009-08-05 17:11:01

+0

現在明白了,謝謝! – 2009-08-05 17:46:44

10

使用Console.WriteLine()嘗試代替。我在單元測試中使用它,它工作正常 - 它在單元測試結果輸出窗口中顯示文本。

+0

這個工作太多了,謝謝! – 2009-08-05 17:51:18

2

要查看結果在測試雙擊「測試結果」窗口(從主菜單項來訪問「測試」 >>窗口菜單>>測試結果)

1

所有早期的答案實際上是正確的,但需要更多或更少的鼠標點擊。

如果你想看到的輸出立即無需額外的點擊,只需添加列調試跟蹤和/或輸出(stdout)(您是否使用Debug.Write或Console.Write )到測試結果窗格,方法是右鍵單擊測試結果,然後單擊「添加/刪除列」。