110 votes

Comment écrire sur Console.Out 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 au cours de l'exécution d'un test?

106voto

Andras Zoltan Points 24996

La sortie de la console n’apparaît pas parce que le code d’arrière-plan n’est pas exécuté dans le contexte du test.

Vous ferez probablement mieux d'utiliser Trace.WriteLine (dans System.Diagnostics), puis d'ajouter un écouteur de trace qui écrit dans un fichier.

Cette rubrique de MSDN montre une manière de procéder.

69voto

Schaliasos Points 3983

Utilisez les Debug.WriteLine . Votre message s'affichera immédiatement dans la fenêtre Output . La seule restriction est que vous devez exécuter votre test en mode Debug .

 [TestMethod]
public void TestMethod1()
{
    Debug.WriteLine("Time {0}", DateTime.Now);
    System.Threading.Thread.Sleep(30000);
    Debug.WriteLine("Time {0}", DateTime.Now);
}
 

Sortie

entrez la description de l'image ici

0voto

riezebosch Points 849

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X