5

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

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

<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 的公共接口,并以某种方式查看Class1.PrintToDebug()函数的输出。

我查看了TestDriven.Net 快速入门,它显示了在单元测试中使用的示例Debug.WriteLine,但奇怪的是这对我也不起作用——即我的“测试”窗口中的唯一输出是:

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


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

我试过查看其他窗口(调试和构建),调试窗口启用了“程序输出”和“异常消息”选项。

我一直在寻找选项或偏好,但找不到任何!

谢谢你的帮助!


编辑:我正在使用 VB.Net 2.0、TestDriven.Net 2.14.2190 和 NUnit 2.4.8.0

4

7 回答 7

11

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

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

于 2008-10-06T09:17:14.723 回答
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()

于 2008-10-06T09:36:53.450 回答
2

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

我真的应该将快速入门示例更改为使用 Trace。

问候,杰米。

于 2009-12-03T12:57:30.103 回答
1

您可能想知道 2.16(当前的 beta 版本)包括:

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

现在,在项目/解决方案中运行所有测试时,将显示测试运行程序生成的消息和控制台输出。

1588:在项目/解决方案中运行所有测试时,可选择显示跟踪/调试输出

默认情况下,在项目/解决方案中执行所有测试时,不会显示跟踪/调试输出。可以通过 TesDriven.Net 选项窗格修改此行为。

所以它似乎将在下一个版本中工作。

于 2008-10-10T10:30:40.500 回答
0

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

于 2008-10-06T09:45:19.847 回答
0

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

您必须确保将解决方案/项目的当前构建设置设置为“调试”而不是“发布”(否则编译器有条件地删除 Debug.Write*() 调用)。

于 2008-10-06T11:34:15.507 回答
0

CTRL + ALT + I 显示即时窗口

于 2013-04-29T18:47:48.187 回答