Terminalausgabe

Der Terminaltestreporter ist die integrierte Implementierung von Status und Fortschrittsberichterstattung an das Terminal (Konsole). Es ist Teil des Kerns Microsoft. Testing.Platform (MTP) und erfordert keine zusätzlichen NuGet-Pakete.

Ausgabemodi

Es stehen zwei Ausgabemodi zur Verfügung:

  • Normal: die Ausgabe enthält das Banner, liefert vollständige Berichte zu Testfehlern, sendet Warnmeldungen und schreibt eine Zusammenfassung der Ausführung. Ausgabe mit 1 fehlgeschlagenem Test und einer Zusammenfassung

  • Detailedist dasselbe wie Normal, meldet jedoch auch Passed-Tests. Ausgabe mit 1 fehlgeschlagenem und 1 bestandenem Test und einer Zusammenfassung

ANSI (Amerikanisches Institut für Normung)

Intern gibt es 2 verschiedene Ausgabeformatierer, die die Terminalfunktion zum Verarbeiten von ANSI-Escapecodes automatisch erkennen.

  • Der ANSI-Formatierer wird verwendet, wenn das Terminal die Escapecodes rendern kann.
  • Der Nicht-ANSI-Formatter wird verwendet, wenn das Terminal die Escapecodes nicht verarbeiten kann, wenn --no-ansi verwendet wird oder wenn die Ausgabe umgeleitet wird.

Standardmäßig werden die Funktionen automatisch erkannt.

Fortschritt

Eine Statusanzeige wird in das Terminal geschrieben. Die Statusanzeige zeigt die Anzahl der bestandenen Tests, fehlgeschlagenen Tests und übersprungenen Tests an, gefolgt vom Namen der getesteten Assembly, des Zielframeworks und der Architektur.

Eine Statusanzeige mit 23 bestandenen Tests, 0 fehlgeschlagene Tests und 0 übersprungene Tests

Die Fortschrittsanzeige wird basierend auf dem ausgewählten Modus erstellt.

  • ANSI, der Fortschrittsbalken wird animiert, bleibt am unteren Bildschirmrand und wird alle 500 ms aktualisiert. Die Statusleiste blendet nach Abschluss der Testausführung aus.
  • Nicht-ANSI: die Statusanzeige wird alle 3 Sekunden auf dem Bildschirm geschrieben. Der Fortschritt verbleibt in der Ausgabe.

Direkte Konsolenausgabe und Neuzeichnung der Fortschrittsanzeige

Um den Fortschrittsbalken zu animieren, übernimmt der ANSI-Fortschrittsrenderer die Kontrolle über den Terminalcursor und zeichnet den unteren Bereich des Bildschirms wiederholt neu. Jeder Text, der direkt in stdout oder stderr außerhalb des Erfassungspfads des Testframeworks geschrieben wird, kann während dieses Neuzeichnens überschrieben oder entfernt werden. Beispielsweise kann ein Console.WriteLine-Aufruf aus dem Lebenszykluscode auf Assembly- oder Sitzungsebene (z. B. aus einem Before(Assembly)- oder Before(TestSession)-Hook) oder aus einer Erweiterung kurz aufblinken und dann wieder verschwinden, wenn die Fortschrittsleiste aktualisiert wird.

Dieses Verhalten unterscheidet sich von erfassten Standardausgabe- und Standardfehlern pro Test. Die Ausgaben, die ein Test während der Ausführung erzeugt, werden vom Framework erfasst und gemäß --show-stdout und --show-stderr angezeigt, damit der Fortschrittsbalken sie nicht überschreibt.

Wenn Ihr Code direkt in die Konsole schreiben muss und diese Ausgabe sichtbar bleiben soll, deaktivieren Sie den Fortschritt (--progress off in MTP 2.3.0+ oder --no-progress in früheren Versionen). Alternativ können Sie ANSI (--ansi off in MTP 2.3.0+ oder --no-ansi in früheren Versionen) deaktivieren, um die Nicht-ANSI-Fortschrittsausgabe zu verwenden, bei der neue Zeilen angehängt werden, anstatt die Anzeige an Ort und Stelle neu zu zeichnen, und die die vorherige direkte Ausgabe nicht überschreibt.

Options

Option MTP-Version Description
--no-progress Deaktiviert die Fortschrittsanzeige am Bildschirm. Veraltet in MTP 2.3.0 zugunsten von --progress off.
--progress 2.3.0 Steuert, ob der Fortschritt angezeigt wird. Gültige Werte sind auto (Standard), on (akzeptiert , trueenable, 1) und off (akzeptiert auch false, , disable0).
--no-ansi Deaktiviert die Ausgabe von ANSI-Escapezeichen auf den Bildschirm.
--ansi 2.3.0 Steuert, ob ANSI-Escapezeichen ausgegeben werden. Gültige Werte sind auto (Standard), on (akzeptiert , trueenable, 1) und off (akzeptiert auch false, , disable0).
--output Gibt die Ausführlichkeit der Ausgabe beim Melden von Tests an. Gültige Werte sind Normal und Detailed. Der Standardwert ist Normal.
--show-stdout 2.2.1 Bestimmt, wann die erfasste Standardausgabe eines Tests angezeigt werden soll. Gültige Werte sind All, Failedund None. Der Standardwert ist All.
--show-stderr 2.2.1 Bestimmt, wann erfasste Fehlerausgabe eines Tests angezeigt werden soll. Gültige Werte sind All, Failedund None. Der Standardwert ist All.
--show-flaky-tests 2.4.0 Steuert die flaky: Zusammenfassung und die Flaky-Testliste für Tests, die nach einem Wiederholungsversuch bestanden werden. Verwenden on oder off; der Standardwert ist on. Gilt für MSTest [Retry] und die Wiederholungserweiterung.

Hinweis

Ein Gedankenstrich (—) in der Spalte "MTP-Version " markiert kernige Optionen, die nicht an eine bestimmte Version gebunden sind, da sie seit den ersten Versionen der Plattform verfügbar sind.

Hinweis

Ab MTP 2.3.0 unterdrückt MTP, wenn es erkennt, dass es in einer LLM- oder KI-Tool-Umgebung ausgeführt wird, das Startbanner und ändert die Standardvorgabe für --show-stdout und --show-stderr von All auf Failed, um Rauschen zu reduzieren.