使用TestDriven.Net时如何查看Debug.WriteLine语句?

时间:2008-10-06 09:13:25

标签: .net debugging testdriven.net

我正在尝试使用TestDriven.Net来测试我的代码,而不是在我的代码上调用一个函数,其目的是将代码的内部状态打印到Debug窗口。

这是我正在尝试做的一个非常简单的例子..

<TestFixture()> _
Public Class UnitTest

    <Test()> _
    Public Sub TestDebug()
        Dim oClass1 As New Class1

        Assert.AreEqual(True, oClass1.IsTrue)

        Debug.WriteLine("About to call .PrintDebug()")
        oClass1.PrintToDebug()

    End Sub

End Class

Public Class Class1

    Private _IsTrue As Boolean = True

    Public ReadOnly Property IsTrue() As Boolean
        Get
            Return _IsTrue
        End Get
    End Property

    Public Sub PrintToDebug()
        Debug.WriteLine("Internal state of Class1: " & _IsTrue)
    End Sub

End Class

我正在尝试测试Class1的Public接口,并以某种方式查看Class1.PrintToDebug()函数的输出。

我查看了TestDriven.Net quickstart,其中显示了在单元测试中使用Debug.WriteLine的示例,但奇怪的是这对我来说也不起作用 - 即我的'测试中唯一的输出'窗口是:

------ Test started: Assembly: ClassLibrary1.dll ------


1 passed, 0 failed, 0 skipped, took 1.19 seconds.

我试过查看其他窗口(Debug和Build),Debug窗口启用了'Program Output'和'Exception Messages'选项。

我找了选项或偏好,找不到任何!

感谢您的帮助!

<小时/> 编辑:我正在使用VB.Net 2.0,TestDriven.Net 2.14.2190和NUnit 2.4.8.0

7 个答案:

答案 0 :(得分:11)

我发现虽然Debug.Writeline()不能用于单元测试,但是Console.WriteLine()可以。

原因是当您运行测试时,不会调用调试器进程,并且会忽略Debug.WriteLine()。但是,如果您使用“Test with Debugger”,我认为(尚未尝试过)Debug.WriteLine()将起作用。

答案 1 :(得分:3)

Trace.WriteLine() 似乎就是答案:o)

以下是我的问题示例的输出,使用Trace代替Debug

------ Test started: Assembly: ClassLibrary1.dll ------

Internal state of Class1: True

1 passed, 0 failed, 0 skipped, took 0.61 seconds.

我发现了一件事情......在第一次失败的单元测试断言时暂停执行,这意味着如果Trace语句失败,则Assert()语句不会被执行。

答案 2 :(得分:2)

尝试使用Trace.WriteLine(...)。只有在定义了DEBUG时才会调用Debug.WriteLine(...)。默认情况下,新的Visual Studio项目不再定义DEBUG,但它们确实定义了TRACE。

我应该更改quickstart示例以改为使用Trace。

此致 杰米。

答案 3 :(得分:1)

您可能想知道2.16(当前测试版)包括:

  

1587:始终显示控制台   输出/错误和测试运行器消息

     

测试跑步者生成的消息和   现在将显示控制台输出   当运行所有测试时   项目/溶液

     

1588:可选择显示跟踪/调试   运行所有测试时输出   项目/溶液

     

默认情况下,trace / debug输出不是   执行所有测试时显示   项目/解决方案。这种行为可以   通过TesDriven.Net进行修改   选项窗格。

所以它似乎可以在下一版本中使用。

答案 4 :(得分:0)

IIRC,此输出仅在运行单个测试时显示在输出窗口中。尝试右键单击测试方法以仅运行该测试...?

答案 5 :(得分:0)

“运行测试...”选择您目前构建解决方案/项目所需的任何设置。

您必须确保解决方案/项目的当前构建设置设置为“Debug”而不是“Release”(否则编译器会删除Debug.Write *()调用conditionally

答案 6 :(得分:0)

CTRL + ALT +我向您显示即时窗口