代码之家  ›  专栏  ›  技术社区  ›  jitbit

使用testsdriven.net时如何查看debug.writeline语句?

  •  5
  • jitbit  · 技术社区  · 17 年前

    我尝试使用testsdriven.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 quickstart ,其中显示了使用 Debug.WriteLine 在单元测试中,但奇怪的是,这对我也不起作用——也就是说,我的“测试”窗口中的唯一输出是:

    ------ Test started: Assembly: ClassLibrary1.dll ------
    
    
    1 passed, 0 failed, 0 skipped, took 1.19 seconds.
    

    我尝试在其他窗口(调试和生成)中查找,调试窗口启用了“程序输出”和“异常消息”选项。

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

    谢谢你的帮助!


    编辑: 我使用的是vb.net 2.0、testsdriven.net 2.14.2190和nunit 2.4.8.0
    7 回复  |  直到 13 年前
        1
  •  10
  •   Jon Limjap    17 年前

    我发现debug.writeline()不适用于单元测试时,console.writeline()适用。

    原因是,运行测试时,不会调用调试器进程,并且会忽略debug.writeline()。但是,如果使用“test with debugger”,我认为(还没有尝试过)debug.writeline()可以工作。

        2
  •  3
  •   jitbit    17 年前

    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() 在他们之上失败了。

        3
  •  2
  •   jcansdale    16 年前

    尝试改用trace.writeline(…)。只有在定义了debug时,才会调用debug.writeline(…)。默认情况下,新的Visual Studio项目不再定义调试,而是定义跟踪。

    我真的应该将快速启动示例改为使用trace。

    当做, 杰米。

        4
  •  1
  •   Marc Gravell    17 年前

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

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

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

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

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

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

        5
  •  0
  •   Marc Gravell    17 年前

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

        6
  •  0
  •   Christian.K    17 年前

    “运行测试…”选择当前必须建立解决方案/项目的任何设置。

    您必须确保解决方案/项目的当前生成设置设置为“调试”,而不是“发布”(否则,debug.write*()调用为 conditionally 被编译器删除)。

        7
  •  0
  •   Sergio Fabián    13 年前

    ctrl+alt+i显示即时窗口

    推荐文章