我正在尝试使用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快速入门,其中显示了使用单元测试中的 Debug.WriteLine ,但奇怪的是这对我也不起作用 - 即我的'Test'窗口中唯一的输出是:

------ 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

有帮助吗?

解决方案

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

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

其他提示

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.

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

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

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

此致 杰米。

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

  

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

     

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

     

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

     

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

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

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top