Jeder Aufruf in meinem Unit testet entweder Debug.Write(line)
oder Console.Write(Line)
wird beim Debuggen einfach übersprungen und die Ausgabe wird nie gedruckt. Aufrufe dieser Funktionen aus Klassen, die ich verwende, funktionieren einwandfrei.
Ich verstehe, dass Unit-Tests automatisiert werden sollen, möchte aber dennoch Nachrichten von einem Unit-Test ausgeben können.
Ich habe auch versucht, Debug oder Trace oder Console oder TestContext für Unit-Tests zum Laufen zu bringen.
Keine dieser Methoden scheint zu funktionieren oder die Ausgabe im Ausgabefenster anzuzeigen:
Visual Studio 2012 und höher
(aus Kommentaren) In Visual Studio 2012 gibt es kein Symbol. Stattdessen gibt es in den Testergebnissen einen Link namens Ausgabe . Wenn Sie auf den Link klicken, sehen Sie alle
WriteLine
.Vor Visual Studio 2012
Ich habe dann in meinem Testergebnisfenster festgestellt , dass nach dem Ausführen des Tests neben dem kleinen grünen Kreis mit Erfolg ein weiteres Symbol angezeigt wird. Ich habe doppelt darauf geklickt. Es waren meine Testergebnisse, und es enthielt alle oben genannten Arten von Schreiblinien.
quelle
In Visual Studio 2017 können Sie die Ausgabe des Test-Explorers anzeigen.
1) In Ihrer Testmethode Console.WriteLine ("etwas");
2) Führen Sie den Test aus.
3) Klicken Sie im Fenster Test Explorer auf Bestanden.
4) Und klicken Sie auf den Link "Ausgabe".
Wenn Sie auf "Ausgabe" klicken, wird das Ergebnis von Console.Writeline () angezeigt.
quelle
Console.WriteLine
ist auch im Ausgabebereich unter "Tests" nicht sichtbar.Dies hängt von Ihrem Testläufer ab. Ich verwende beispielsweise xUnit. Befolgen Sie also die folgenden Anweisungen, falls Sie diese verwenden:
https://xunit.github.io/docs/capturing-output.html
Diese Methode gruppiert Ihre Ausgabe mit jedem spezifischen Komponententest.
In dem Link, den ich zum Schreiben in Ihr Ausgabefenster angegeben habe, ist eine andere Methode aufgeführt, aber ich bevorzuge die vorherige.
quelle
Ich denke es ist immer noch aktuell.
Sie können dieses NuGet-Paket verwenden: Bitoxygen.Testing.Pane
Rufen Sie die benutzerdefinierte WriteLine- Methode aus dieser Bibliothek auf. Es erstellt einen Testbereich im Ausgabefenster und legt dort immer Nachrichten ab (bei jedem Test wird es unabhängig von den DEBUG- und TRACE-Flags ausgeführt).
Um die Ablaufverfolgung zu vereinfachen, kann ich empfehlen, eine Basisklasse zu erstellen:
quelle
Could not load file or assembly 'Microsoft.VisualStudio.Shell.12.0,
Versuchen Sie es mit:
Console.WriteLine()
Der Aufruf von
Debug.WriteLine
erfolgt nur, wenn DEBUG definiert ist.Andere Vorschläge sind zu verwenden:
Trace.WriteLine
auch, aber ich habe dies nicht versucht.Es gibt auch eine Option (nicht sicher, ob Visual Studio 2008 diese hat), die Sie jedoch weiterhin verwenden können,
Debug.WriteLine
wenn Sie den Test mit derTest With Debugger
Option in der IDE ausführen .quelle
Gelöst mit folgendem Beispiel:
Nach dem Ausführen dieses Tests besteht unter "Test bestanden" die Option, die Ausgabe anzuzeigen, wodurch das Ausgabefenster geöffnet wird.
quelle
Es hängt in der Tat vom Testläufer ab, wie @jonzim erwähnt. Für NUnit 3 musste ich verwenden
NUnit.Framework.TestContext.Progress.WriteLine()
, um die Ausgabe im Ausgabefenster von Visual Studio 2017 auszuführen.NUnit beschreibt, wie: hier
Nach meinem Verständnis dreht sich dies um die zusätzliche Parallelisierung der Testausführung, die die Testläufer erhalten haben.
quelle
Ich erhalte keine Ausgabe, wenn meine Einstellungen für Test / Testeinstellungen / Standardprozessorarchitektur und die Assemblys, auf die mein Testprojekt verweist, nicht identisch sind. Andernfalls funktioniert Trace.Writeline () einwandfrei.
quelle
Console.WriteLine funktioniert nicht. Im Debug-Modus funktionieren nur Debug.WriteLine () oder Trace.WriteLine ().
Ich mache Folgendes: Verwenden von System.Diagnostics im Testmodul. Verwenden Sie dann Debug.WriteLine für meine Ausgabe, klicken Sie mit der rechten Maustaste auf den Test und wählen Sie Ausgewählte Tests debuggen . Die Ergebnisausgabe wird nun im Ausgabefenster unten angezeigt. Ich verwende Visual Studio 2017 vs 15.8.1 mit dem Standard-Unit-Test-Framework, das VS bereitstellt.
quelle
Sind Sie sicher, dass Sie Ihre Komponententests in Debug ausführen? Debug.WriteLine wird in Release-Builds nicht aufgerufen.
Zwei Möglichkeiten zum Ausprobieren sind:
Trace.WriteLine (), das sowohl in Release-Builds als auch im Debug integriert ist
Deaktivieren Sie DEBUG in Ihren Build-Einstellungen für den Unit-Test
quelle
Ich benutze xUnit, also benutze ich Folgendes :
PS: Sie können auch verwenden
Debugger.Break();
, damit Sie Ihre Anmeldung sehen könnenout
.quelle
out
"?Eine andere Variante der Ursache / Lösung:
Mein Problem war, dass ich keine Ausgabe erhielt, weil ich die Ergebnismenge eines asynchronen LINQ-Aufrufs in einer Schleife in einem asynchronen Kontext an die Konsole schrieb:
Daher wurde der Test nicht in die Konsole geschrieben, bevor das Konsolenobjekt zur Laufzeit bereinigt wurde (wenn nur ein Test ausgeführt wurde).
Die Lösung bestand darin, die Ergebnismenge zuerst in eine Liste zu konvertieren, damit ich die nicht asynchrone Version von forEach () verwenden konnte:
quelle
In VS 2019
View
->Test Explorer
additional output
Link (siehe Abbildung unten).Sie können verwenden:
Alle werden im zusätzlichen Ausgabefenster protokolliert.
quelle
Trace.WriteLine
sollte funktionieren, vorausgesetzt, Sie wählen die richtige Ausgabe aus (die Dropdown-Liste mit der Bezeichnung "Ausgabe anzeigen von" im Ausgabefenster ).quelle