Comment puis-je voir les instructions Debug.WriteLine lorsque j'utilise TestDriven.Net?

StackOverflow https://stackoverflow.com/questions/173641

  •  05-07-2019
  •  | 
  •  

Question

J'essaie d'utiliser TestDriven.Net non seulement pour tester mon code, mais pour appeler une fonction sur mon code dont le but est d'imprimer l'état interne du code dans la fenêtre de débogage.

Voici un exemple très simplifié de ce que j'essaie de faire.

<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

J'essaie de tester l'interface publique de Class1 et d'afficher en quelque sorte le résultat de la fonction Class1.PrintToDebug () .

J'ai consulté le quickstart de TestDriven.Net , qui présente des exemples d'utilisation du Debug.WriteLine dans un test unitaire, mais étrangement, cela ne fonctionne pas pour moi non plus - c'est-à-dire que la seule sortie dans ma fenêtre "Test" est:

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


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

J'ai essayé de regarder dans les autres fenêtres (Debug et Build), les options "Sortie du programme" et "Messages d'exception" sont activées dans la fenêtre Débogage.

J'ai cherché des options ou des préférences et n'en ai trouvé aucune!

Merci pour votre aide!


Modifier: j'utilise VB.Net 2.0, TestDriven.Net 2.14.2190 et NUnit 2.4.8.0

Était-ce utile?

La solution

J'ai constaté que, bien que Debug.Writeline () ne fonctionne pas avec les tests unitaires, Console.WriteLine () le fait.

La raison en est que lorsque vous exécutez des tests, le processus de débogage n’est pas appelé et Debug.WriteLine () est ignoré. Cependant, si vous utilisez "Test avec le débogueur", je pense que (je n’ai pas essayé) Debug.WriteLine () fonctionnera.

Autres conseils

Trace.WriteLine () semble être la réponse: o)

Voici le résultat de l'exemple de ma question, en utilisant Trace au lieu de Debug :

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

Internal state of Class1: True

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

Une chose que j'ai trouvée cependant .. l'exécution est arrêtée lors de la première assertion de test d'unité défaillante, ce qui signifie que les instructions Trace ne sont pas exécutées si un Assert () au-dessus d’eux échoue.

Essayez d’utiliser plutôt Trace.WriteLine (...). L'appel à Debug.WriteLine (...) ne sera effectué que lorsque DEBUG est défini. Par défaut, les nouveaux projets Visual Studio ne définissent plus DEBUG, mais TRACE.

Je devrais vraiment changer l'exemple de démarrage rapide pour utiliser Trace à la place.

Cordialement, Jamie.

Vous voudrez peut-être savoir que la version 2.16 (la version bêta actuelle) inclut:

  

1587: Toujours afficher la console   messages de sortie / d'erreur et de testeur

     

Tester les messages générés par le coureur et   la sortie de la console sera maintenant affichée   lors de l'exécution de tous les tests dans un   projet / solution.

     

1588: éventuellement afficher trace / débogage   sortie lors de l'exécution de tous les tests dans   projet / solution

     

Par défaut, la sortie trace / debug n'est pas   affiché lors de l'exécution de tous les tests   un projet / solution. Ce comportement peut   être modifié via le TesDriven.Net   volet des options.

Il semble donc que cela fonctionnera dans la prochaine version.

IIRC, cette sortie est uniquement affichée dans la fenêtre de sortie lors de l'exécution d'un test individuel. Essayez de cliquer avec le bouton droit de la souris sur la méthode de test pour exécuter uniquement ce test ...?

" Exécuter les tests ... " récupère le paramètre que vous avez actuellement pour construire votre solution / projet.

Vous devez vous assurer que les paramètres de construction actuels de votre solution / projet sont définis sur " Debug " et ne pas "valider" (sinon, les appels Debug.Write * () sont conditionnellement supprimé par le compilateur).

CTRL + ALT + I vous montre la fenêtre immédiate

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top