Contexte:
certains utilisateurs signalent des problèmes avec une fonction de téléchargement de fichiers dans notre application Web. Cela n'arrive qu'occasionnellement et sans motif particulier. Nous essayons de le comprendre depuis longtemps, en ajoutant des informations de débogage partout où nous pouvons penser que cela pourrait aider, en explorant les journaux, etc., mais nous n'avons pas été en mesure de le reproduire ou de le comprendre.
Problème:
j'essaie maintenant de reproduire cela en utilisant MSTest et WatiN pour répéter l'opération qui est censée échouer un grand nombre de fois (plusieurs centaines). Juste pour avoir une idée de la progression du test dans la boucle, je veux imprimer quelque chose comme:
Console.WriteLine(String.Format("Uploaded file, attempt {0} of {1}", i, maxUploads));
Cela n'apparaît cependant pas dans la fenêtre Sortie. Maintenant, je sais que vous obtiendrez la sortie de la console dans les résultats du test (ainsi que ce que vous produisez, Debug.Writeline
etc.), mais cela n'est disponible qu'après la fin du test. Et comme mon test avec des centaines de répétitions pourrait prendre un certain temps, j'aimerais savoir jusqu'où il est allé.
Question:
Existe - t-il un moyen d'obtenir la sortie de la console dans la fenêtre Sortie pendant l' exécution du test?
Réponses:
La sortie de la console n'apparaît pas car le code backend n'est pas en cours d'exécution dans le contexte du test.
Il vaut probablement mieux utiliser
Trace.WriteLine
(Dans System.Diagnostics), puis ajouter un écouteur de trace qui écrit dans un fichier.Cette rubrique de MSDN montre une façon de procéder.
Selon les commentaires de Marty Neal et Dave Anderson:
la source
Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));
Trace.WriteLine("Hello World");
Trace.WriteLine()
et laConsole.WriteLine()
sortie à la vue des résultats de test , pas à la vue de sortie . (Et notez que dans la vue des résultats de test , il peut être nécessaire d'ajouter la colonne Sortie (Stdout) en cliquant avec le bouton droit et en sélectionnant Ajouter / Supprimer des colonnes .... ) Mais, peut-être que je ne vois toujours pas la sortie dans la sortie Voir signifie que je manque quelque chose ...Trace.Listeners.Add(new ConsoleTraceListener());
est suffisant, puis Afficher la sortie du débogage dans la fenêtre de sortie.Utilisez le
Debug.WriteLine
. Cela affichera votre message dans laOutput
fenêtre immédiatement. La seule restriction est que vous devez exécuter votre test enDebug
mode.Production
la source
using System.Diagnostics;
J'ai trouvé ma propre solution. Je sais que la réponse d'Andras est probablement la plus cohérente avec MSTEST, mais je n'avais pas envie de refactoriser mon code.
Le jetable
ConsoleRedirector
est défini comme:la source
J'ai eu le même problème et j'ai «exécuté» les tests. Si à la place je «débogue» les tests, la sortie de débogage montre très bien comme tous les autres Trace et Console. Je ne sais pas cependant comment voir la sortie si vous "exécutez" les tests.
la source
System.Diagnostics.Debug.WriteLine
lors du débogage des tests, mais comment vous mettreConsole.WriteLine
au travail? Cela ne se termine pas dans la sortie normale (mise à jour en direct) pour moi.Vous feriez mieux de configurer un seul test et de créer un test de performance à partir de ce test. De cette façon, vous pouvez surveiller la progression à l'aide du jeu d'outils par défaut.
la source