Frage

Ich versuche TestDriven.Net zu verwenden, nicht nur meinen Code zu testen, aber eine Funktion auf meinem Code, dessen Zweck zu nennen, ist aus dem internen Zustand des Codes auf das Debug-Fenster zu drucken.

Hier ist ein sehr vereinfachtes Beispiel, was ich versuche zu tun ..

<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

Ich versuche, die öffentliche Schnittstelle von Class1 zu testen und sehen irgendwie die Ausgabe von der Class1.PrintToDebug() Funktion.

Ich habe das sah durch TestDriven.Net quickstart , die Beispiele für die Verwendung zeigt die Debug.WriteLine in einem Gerät zu testen, aber seltsam für mich nicht funktioniert entweder - also der einzige Ausgang in meinen ‚Test‘ Fenstern ist:

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


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

Ich habe versucht, Blick in den anderen Fenstern (Debug and Build), hat die Debug-Fenster 'Program Output' und 'Ausnahmemeldungen' Optionen aktiviert.

Ich habe für Optionen oder Einstellungen geschaut und keine finden können!

Vielen Dank für Ihre Hilfe!


Edit: Ich verwende VB.Net 2.0, TestDriven.Net 2190.02.14 und NUnit 2.4.8.0

War es hilfreich?

Lösung

Ich fand, dass während Debug.WriteLine () funktioniert nicht mit Unit-Tests, Console.WriteLine () der Fall ist.

Der Grund dafür ist, dass, wenn Sie Tests ausführen, der Debugger-Prozess nicht aufgerufen wird, und Debug.WriteLine () wird ignoriert. wenn Sie "Test mit Debugger" verwenden jedoch, glaube ich (habe nicht versucht) Debug.WriteLine () funktioniert.

Andere Tipps

Trace.WriteLine() erscheint die Antwort zu sein: o)

Hier ist die Ausgabe für das Beispiel aus meiner Frage, mit Trace statt Debug:

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

Internal state of Class1: True

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

Eine Sache, die ich habe, obwohl gefunden .. Ausführung bei der ersten andernfalls Unit-Test Behauptung angehalten wird, was bedeutet, dass Trace Anweisungen ausgeführt werden, wenn ein nicht Assert() über ihnen versagt.

Versuchen Trace.WriteLine mit (...) statt. Der Aufruf von Debug.WriteLine (...) nur dann vorgenommen werden, wenn DEBUG definiert ist. Standardmäßig werden neue Visual Studio-Projekte nicht mehr DEBUG definieren, aber sie tun TRACE definieren.

Ich soll wirklich das Schnellstart-Beispiel ändern, anstatt Trace zu verwenden.

Viele Grüße, Jamie.

Vielleicht möchten Sie wissen, dass 2,16 (die aktuelle Beta-Version) enthält:

  

1587: Immer Display-Konsole   Ausgabe / Fehler und Test-Runner-Nachrichten

     

Test Läufer erzeugten Meldungen und   Konsolenausgabe wird nun angezeigt   beim Laufen alle Tests in einem   Projekt / Lösung.

     

1588: Optional Anzeige trace / debug   ausgegeben, wenn alle Tests laufen in   Projekt / Lösung

     

Mit dem Standard-Trace / Debug-Ausgabe ist nicht   angezeigt wird, wenn die Ausführung aller Tests in   ein Projekt / Lösung. Dieses Verhalten kann   werden über den TesDriven.Net modifizierte   Optionen Bereich.

So scheint es, dass es in der nächsten Version arbeiten.

IIRC, wird diese Ausgabe nur im Ausgabefenster angezeigt, wenn eine individuelle Prüfung ausgeführt wird. Versuchen Sie einen Rechtsklick auf das Testverfahren genau das Test zu laufen ...?

„Run Tests ...“ aufgreift, was auch immer Sie sich gerade Einstellung haben Ihre Lösung / Projekt erstellen.

Sie müssen sicherstellen, dass die aktuellen Build-Einstellungen für Ihre Lösung / Projekt „Debug“ gesetzt und nicht auf „Release“ (sonst Debug.Write * () Anrufe sind bedingt durch den Compiler entfernt ).

STRG + ALT + I zeigt Ihnen die sofortigen Fenster

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top