使用TestDriven.Net时如何查看Debug.WriteLine语句?
-
05-07-2019 - |
题
我正在尝试使用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 +我向您显示即时窗口