Comment écrire dans la Console.Lors de l'exécution d'un test MSTest
Contexte:
Nous avons certains utilisateurs de signaler des problèmes avec un fichier de téléchargement dans notre application web. Il arrive seulement de temps en temps et sans motif. Nous avons essayé de comprendre pour un long temps, en ajoutant des informations de débogage n'importe où, nous pouvons penser que cela pourrait aider, en rampant les journaux, etc, mais nous n'avons pas été en mesure de reproduire ou de le comprendre.
Problème:
Je vais maintenant essayer de reproduire cela à l'aide de MSTest et WatiN répéter l'opération qui est censé l'échec d'un grand nombre de fois (plusieurs centaines). Juste pour avoir une idée de comment loin dans la boucle, le test a eu, je veux imprimer quelque chose comme:
Console.WriteLine(String.Format("Uploaded file, attempt {0} of {1}", i, maxUploads));
Ce n'est cependant pas apparaître dans la fenêtre de Sortie. Maintenant, je sais que vous aurez la sortie de la console dans les résultats du test (ainsi que ce que vous sortie de Debug.Writeline
etc), mais ce n'est pas disponible jusqu'à ce que après le test est terminé. Et depuis mon test avec des centaines de répétitions peut prendre un peu de temps, j'aimerais savoir dans quelle mesure il a obtenu.
Question:
Est-il possible que je peux obtenir à la sortie de la console dans la fenêtre de Sortie pendant l'exécution d'un test?
- Si vous cherchez un moyen pour imprimer le résultat du test de sortie: stackoverflow.com/a/4787047/621690
Vous devez vous connecter pour publier un commentaire.
La sortie de la Console est de ne pas apparaître est parce que le backend code n'est pas exécuté dans le contexte du test.
Vous êtes probablement mieux d'utiliser
Trace.WriteLine
(Dans le Système.Le diagnostic) et à l'ajout d'une trace auditeur qui écrit dans un fichier.Cette rubrique à partir de MSDN montre une façon de le faire.
Selon Marty Neal et Dave Anderson commentaires:
Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));
Trace.WriteLine("Hello World");
Trace.WriteLine()
etConsole.WriteLine()
sortie de la Test de la Vue des Résultats, pas le Vue de Sortie. (Et notez que dans le Test de la Vue des Résultats, il peut être nécessaire d'ajouter le Sortie (Stdout) colonne par un clic droit et en sélectionnant Ajouter/Supprimer des Colonnes....) Mais, je suis peut-être toujours pas à voir la sortie de la Vue de Sortie signifie que je suis absent quelque chose...Trace.Listeners.Add(new ConsoleTraceListener());
est suffisante et de Montrer ensuite la sortie de Débogage dans la fenêtre de sortie.Trace.WriteLine
apparaît uniquement dans la fenêtre de résultat de test, comme @DavidRR dit.Utiliser le
Debug.WriteLine
. Cela permet d'afficher votre message dans laOutput
immédiatement la fenêtre. La seule restriction est que vous devez exécuter votre test enDebug
mode.Sortie
using System.Diagnostics;
Tests
fenêtre de sortie, comment écrivez-vous pour cela au lieu deDebug
?J'ai trouvé une solution à mon propre. Je sais que Andras réponse est probablement le plus cohérent avec MSTEST, mais je n'ai pas envie de refactoring mon code.
Jetables
ConsoleRedirector
est défini comme:J'ai eu le même problème et j'ai été "Running" les tests. Si je à la place de "Débogage" les tests de la sortie de Débogage montre bien comme tous les autres de la Trace et de la Console.
Je ne sais pas comment voir la sortie si vous "lancer" les tests.
System.Diagnostics.Debug.WriteLine
alors que les tests de débogage, mais comment obtenez-vousConsole.WriteLine
de travail? Ce n'est pas normal (mis à jour en direct) de sortie pour moi.Vous mieux d'installation d'un test unique et de créer un test de performance de ce test. De cette façon, vous pouvez surveiller la progression à l'aide de l'outil par défaut du jeu.