Visual Studio测试中的跟踪(从NUnit迁移)

Tim*_*han 10 trace nunit unit-testing mstest visual-studio

在NUnit中,我习惯在测试中编写Trace语句,并将它们显示在NUnit gui的trace选项卡中.

在一个新项目中,我正在转向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
Run Code Online (Sandbox Code Playgroud)

我遇到了失败,所以我知道Debug.Write和Trace.Write行正在执行.

我已经阅读了MSDN文档来编写这些测试,如果在命令行执行,我可以通过以下方式查看跟踪输出:

mstest.exe /testcontainer:mydll.dll /detail:debugtrace
Run Code Online (Sandbox Code Playgroud)

但是,在visual studio中直接执行测试时,我找不到跟踪输出.是否有另一种在单元测试期间输出信息的首选方法,或者我是否缺少在visual studio中查看跟踪信息的选项?

答案: 下面的两个答案(Console.Write和Debug.Write)都有效,结果在测试结果详细信息中(底部的TestResult窗格,右键单击测试结果并转到TestResultDetails).另外,我在项目属性中设置了Debug和Trace常量.

Jas*_*ans 11

请尝试使用Console.WriteLine().我在单元测试中使用它并且工作正常 - 它在单元测试结果输出窗口中显示文本.


Mic*_*ves 10

通常我使用这种方法在visual studio的输出窗口中打印一些东西:

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

  • 它仍然没有出现在输出中。我已经尝试通过测试运行测试和调试。我正在调用 Debug.Flush(),并将输出窗口设置为显示调试输出。知道我在这里缺少什么吗? (2认同)