2009-08-05 12 views
10

Dans NUnit, je suis habitué à écrire des instructions Trace dans le test et à les afficher dans l'onglet Trace du GUI NUnit.Trace dans les tests Visual Studio (Migration à partir de NUnit)

Dans un nouveau projet, je passe à l'unité de test intégré dans Visual Studio Professional Addition, qui, je crois, est une interface pour mstest.exe.

Code d'essai:

<TestMethod()> 
Public Sub TestPagesInheritFromBasePage() 
    Dim webUI As Assembly = Assembly.GetAssembly(GetType(WebUI.BasePage)) 
    Dim badPages As New List(Of String) 
    For Each t As Type In webUI.GetTypes() 
     Debug.Write(t.Name + ", ") 
     Trace.Write(t.Name + ", ") 
     If t.BaseType Is GetType(System.Web.UI.Page) Then badPages.Add(t.Name) 
    Next 
    Debug.Flush() 
    Trace.Flush() 
    If badPages.Count > 0 Then 
     Assert.Fail("{0}: do not inheriting from BasePage", String.Join(", ", badPages.ToArray())) 
    End If 
End Sub 

Je reçois un échec, donc je sais que les lignes Debug.write et Trace.Write exécutent.

Je l'ai lu dans les documents MSDN sur l'écriture de ces tests, et je peux voir la sortie de trace si l'exécution à la ligne de commande, via:

mstest.exe /testcontainer:mydll.dll /detail:debugtrace 

Cependant, je ne peux pas trouver la sortie de trace lorsque exécuter les tests directement dans Visual Studio. Existe-t-il une autre méthode préférée de sortie de l'information pendant un test unitaire, ou est-ce que je manque une option pour voir les informations de trace dans Visual Studio?

Réponse: Les deux réponses ci-dessous (Console.Write et Debug.Write) ont travaillé, les résultats ont été dans l'essai Détail des résultats (volet TestResult en bas, cliquez droit sur les résultats des tests et aller à TestResultDetails) . En outre, j'ai défini les constantes de débogage et de trace dans les propriétés du projet.

Répondre

10

Habituellement j'utiliser cette méthode pour imprimer quelque chose dans la fenêtre de sortie de Visual Studio:

System.Diagnostics.Debug.WriteLine("Message"); 
+1

Il n'apparaît toujours pas dans la sortie. J'ai essayé d'exécuter le test et de déboguer pendant le test. J'appelle Debug.Flush() et ai la fenêtre de sortie définie pour montrer la sortie de débogage. Une idée de ce qui me manque ici? –

+0

l'ai maintenant, merci! –

10

Essayez d'utiliser Console.WriteLine() à la place. Je l'utilise dans mes tests unitaires et ça fonctionne bien - il affiche du texte dans la fenêtre de sortie du résultat du test de l'unité.

+0

cela a fonctionné aussi, merci! –

2

Pour voir les résultats cliquez deux fois sur le test dans les « Résultats du test » de la fenêtre (accessible à partir du menu principal « Tests » menu de la fenêtre >> >> Résultats du test)

1

Toutes les réponses précédentes sont en fait correctes, mais nécessite plus ou moins de clics de souris.

Si vous souhaitez voir la sortie immédiatement sans un clic supplémentaire, ajoutez simplement les colonnes Trace de débogage et/ou sortie (StdOut) (si vous utilisez Debug.Write ou Console.Write) au Résultats du test en cliquant avec le bouton droit de la souris sur le résultat du test, puis sur "Ajouter/Supprimer des colonnes".