Domanda

Sto cercando di utilizzare TestDriven.Net non solo per testare il mio codice, ma per chiamare una funzione sul mio codice il cui scopo è di stampare lo stato interno del codice nella finestra Debug.

Ecco un esempio molto semplificato di ciò che sto cercando di fare ..

<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

Sto provando a testare l'interfaccia pubblica di Class1 e in qualche modo visualizzare l'output dalla funzione Class1.PrintToDebug () .

Ho esaminato il TestDriven.Net quickstart , che mostra esempi di utilizzo del Debug.WriteLine in un test unitario, ma stranamente non funziona neanche per me - vale a dire che l'unico output nella mia finestra "Test" è:

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


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

Ho provato a cercare nelle altre finestre (Debug e Build), la finestra Debug ha le opzioni "Output programma" e "Messaggi di eccezione" abilitati.

Ho cercato opzioni o preferenze e non ne trovo nessuna!

Grazie per l'aiuto!


Modifica: sto usando VB.Net 2.0, TestDriven.Net 2.14.2190 e NUnit 2.4.8.0

È stato utile?

Soluzione

Ho scoperto che mentre Debug.Writeline () non funziona con i test unitari, Console.WriteLine () funziona.

Il motivo è che quando si eseguono i test, il processo di debugger non viene invocato e Debug.WriteLine () viene ignorato. Tuttavia, se utilizzi " Test con Debugger " ;, penso che (non ho provato) Debug.WriteLine () funzionerà.

Altri suggerimenti

Trace.WriteLine() sembra essere la risposta: o)

Ecco l'output dell'esempio della mia domanda, usando Trace invece di Debug :

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

Internal state of Class1: True

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

Una cosa che ho trovato però ... l'esecuzione viene interrotta alla prima asserzione di unit test fallita, il che significa che le istruzioni Trace non vengono eseguite se un Assert () sopra di loro fallisce.

Prova invece a utilizzare Trace.WriteLine (...). La chiamata a Debug.WriteLine (...) verrà effettuata solo quando DEBUG è definito. Per impostazione predefinita, i nuovi progetti di Visual Studio non definiscono più DEBUG, ma definiscono TRACE.

Dovrei davvero cambiare l'esempio di avvio rapido per usare invece Trace.

Saluti, Jamie.

Potresti voler sapere che 2.16 (l'attuale versione beta) include:

  

1587: visualizza sempre la console   output / errore e messaggi test runner

     

Test dei messaggi generati dal corridore e   l'output della console verrà ora visualizzato   quando si eseguono tutti i test in a   progetto / soluzione.

     

1588: facoltativamente visualizza traccia / debug   output durante l'esecuzione di tutti i test   progetto / soluzione

     

L'output di traccia / debug di default non lo è   visualizzato quando si eseguono tutti i test in   un progetto / soluzione. Questo comportamento può   essere modificato tramite TesDriven.Net   riquadro delle opzioni.

Quindi sembra che funzionerà nella prossima versione.

IIRC, questo output viene mostrato nella finestra di output solo quando si esegue un singolo test. Prova a fare clic con il pulsante destro del mouse sul metodo di test per eseguire solo quel test ...?

" Esegui test ... " raccoglie qualunque impostazione tu abbia attualmente per costruire la tua soluzione / progetto.

Devi assicurarti che le impostazioni di build correnti per la tua soluzione / progetto siano impostate su " Debug " e non per " Rilascio " (altrimenti le chiamate Debug.Write * () sono in modo condizionale rimosso dal compilatore).

CTRL + ALT + I ti mostra la finestra immediata

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top