Kontext:
Einige Benutzer melden Probleme mit einer Funktion zum Hochladen von Dateien in unserer Webanwendung. Es kommt nur gelegentlich und ohne spezielles Muster vor. Wir haben lange versucht, es herauszufinden, Debug-Informationen hinzuzufügen, wo immer wir glauben, dass es helfen könnte, die Protokolle usw. zu crawlen, aber wir konnten es nicht reproduzieren oder herausfinden.
Problem:
Ich versuche jetzt, dies zu reproduzieren, indem ich MSTest und WatiN verwende, um den Vorgang zu wiederholen, der eine große Anzahl von Malen (mehrere Hundert) fehlschlagen soll. Um eine Ahnung zu haben, wie weit der Test in der Schleife fortgeschritten ist, möchte ich etwas drucken wie:
Console.WriteLine(String.Format("Uploaded file, attempt {0} of {1}", i, maxUploads));
Dies wird jedoch nicht im Ausgabefenster angezeigt. Jetzt weiß ich, dass Sie die Konsolenausgabe in den Testergebnissen erhalten (sowie was Sie von Debug.Writeline
usw. ausgeben ), aber dies ist erst verfügbar, nachdem der Test abgeschlossen ist. Und da mein Test mit Hunderten von Wiederholungen einige Zeit dauern kann, würde ich gerne wissen, wie weit er gekommen ist.
Frage:
Gibt es eine Möglichkeit, die Konsolenausgabe während der Testausführungim Ausgabefenster abzurufen?
Antworten:
Die Konsolenausgabe wird nicht angezeigt, da der Backend-Code im Kontext des Tests nicht ausgeführt wird.
Sie sind wahrscheinlich besser dran,
Trace.WriteLine
(In System.Diagnostics) zu verwenden und dann einen Trace-Listener hinzuzufügen, der in eine Datei schreibt.Dieses Thema von MSDN zeigt einen Weg, dies zu tun.
Nach den Kommentaren von Marty Neal und Dave Anderson:
quelle
Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));
Trace.WriteLine("Hello World");
Trace.WriteLine()
undConsole.WriteLine()
Ausgabe an die Testergebnisse anzeigen , nicht die Ausgabeansicht . (Beachten Sie, dass in der Testergebnisansicht möglicherweise die Spalte Ausgabe (Stdout) hinzugefügt werden muss, indem Sie mit der rechten Maustaste klicken und Spalten hinzufügen / entfernen auswählen .) Möglicherweise wird die Ausgabe jedoch immer noch nicht in der Ausgabe angezeigt Ansicht bedeutet, dass mir etwas fehlt ...Trace.Listeners.Add(new ConsoleTraceListener());
ist ausreichend und dann Ausgabe von Debug im Ausgabefenster anzeigen.Verwenden Sie die
Debug.WriteLine
. Dadurch wird Ihre NachrichtOutput
sofort im Fenster angezeigt . Die einzige Einschränkung besteht darin, dass Sie Ihren Test imDebug
Modus ausführen müssen .Ausgabe
quelle
using System.Diagnostics;
Ich habe eine eigene Lösung gefunden. Ich weiß, dass Andras Antwort wahrscheinlich am besten mit MSTEST übereinstimmt, aber ich hatte keine Lust, meinen Code umzugestalten.
Der Einwegartikel
ConsoleRedirector
ist definiert als:quelle
Ich hatte das gleiche Problem und habe die Tests "ausgeführt". Wenn ich stattdessen die Tests "debugge", zeigt die Debug-Ausgabe wie alle anderen Trace und Console. Ich weiß jedoch nicht, wie ich die Ausgabe sehen soll, wenn Sie die Tests "ausführen".
quelle
System.Diagnostics.Debug.WriteLine
beim Debuggen von Tests etwas zeigen , aber wie kommst duConsole.WriteLine
zur Arbeit? Dies endet für mich nicht in der normalen (live aktualisierten) Ausgabe.Sie sollten einen einzelnen Test einrichten und aus diesem Test einen Leistungstest erstellen. Auf diese Weise können Sie den Fortschritt mit dem Standardwerkzeugsatz überwachen.
quelle