Output del terminale

Il reporter di test del terminale è l'implementazione predefinita dello stato e della segnalazione dello stato al terminale (console). Fa parte del core Microsoft. Testing.Platform (MTP) e non richiede pacchetti NuGet aggiuntivi.

Modalità di output

MTP supporta queste modalità di output:

  • Minimal segnala blocchi di risultati con esito negativo.

  • Normal segnala i blocchi di risultati non riusciti e ignorati. Contiene anche il banner, i messaggi di avviso e il riepilogo dell'esecuzione. Output con 1 test non superato e un riepilogo

  • Detailed segnala tutti i blocchi di risultati. Output con 1 non riuscito e 1 test superato e un riepilogo

Minimal è disponibile nell'anteprima di MTP 2.4.

ANSI (Istituto Nazionale Americano degli Standard)

Internamente sono presenti 2 formattatori di output diversi che rilevano automaticamente la funzionalità del terminale per gestire i codici di escape ANSI.

  • Il formattatore ANSI viene usato quando il terminale è in grado di eseguire il rendering dei codici di escape.
  • Il formattatore non ANSI viene usato quando il terminale non è in grado di gestire i codici di escape, quando --no-ansi viene usato o quando l'output viene reindirizzato.

L'impostazione predefinita consiste nel rilevare automaticamente le funzionalità.

Progress

Un indicatore di stato viene scritto nel terminale. L'indicatore di stato mostra il numero di test superati, test non superati e test ignorati, seguiti dal nome dell'assembly testato, dal relativo framework di destinazione e dall'architettura.

Un indicatore di stato con 23 test superati, 0 test non superati e 0 test ignorati

La barra di stato viene scritta in base alla modalità selezionata:

  • ANSI, l'indicatore di stato è animato, si attacca alla parte inferiore dello schermo e viene aggiornato ogni 500 ms. La barra di avanzamento si nasconde una volta completata l'esecuzione del test.
  • non-ANSI, ogni 3 secondi l'indicatore di stato viene scritto sullo schermo così com'è. L'avanzamento rimane nell'output.

Output diretto della console e ridisegno dell'avanzamento

Per animare l'indicatore di stato, il renderer di stato ANSI controlla il cursore terminale e ridisegna ripetutamente la parte inferiore dello schermo. Qualsiasi testo scritto direttamente in stdout o stderr al di fuori del flusso di cattura del framework di test può essere sovrascritto o rimosso durante questo ridisegno. Ad esempio, una chiamata a Console.WriteLine dal codice del ciclo di vita a livello di assembly o di sessione (come un hook Before(Assembly) o Before(TestSession)), oppure da un'estensione, potrebbe lampeggiare brevemente e poi scomparire quando la barra di avanzamento si aggiorna.

Questo comportamento è diverso dall'output standard acquisito per test e dall'errore standard. Output che un test scrive durante l'esecuzione viene acquisito dal framework e visualizzato in base a --show-stdout e --show-stderr, quindi la barra di stato non la sovrascrive.

Se il codice deve scrivere direttamente nella console ed è necessario che l'output rimanga visibile, disabilitare lo stato di avanzamento (--progress off in MTP 2.3.0+o --no-progress nelle versioni precedenti). In alternativa, disabilita ANSI (--ansi off in MTP 2.3.0+ o --no-ansi nelle versioni precedenti) per usare l'output di avanzamento non ANSI, che aggiunge nuove righe anziché ridisegnare nella stessa posizione e non sovrascrive l'output diretto precedente.

Options

Opzione Versione MTP Descrzione
--no-progress Disabilita la visualizzazione dell'avanzamento sullo schermo. Deprecato in MTP 2.3.0 a favore di --progress off.
--progress 2.3.0 Controlla se viene visualizzato lo stato di avanzamento. I valori validi sono auto (impostazione predefinita), on (accetta trueanche , enable1), e off (accetta falseanche , disable, 0).
--no-ansi Disabilita l'output dei caratteri di escape ANSI sullo schermo.
--ansi 2.3.0 Controlla se vengono generati caratteri di escape ANSI. I valori validi sono auto (impostazione predefinita), on (accetta trueanche , enable1), e off (accetta falseanche , disable, 0).
--output Specifica il livello di dettaglio dell'output per i risultati del test. I valori validi sono Minimal, Normale Detailed. Il valore predefinito è Normal. Minimal richiede l'anteprima di MTP 2.4.
--show-test-results <OUTCOME> 2.4.0 Seleziona i blocchi di risultati in base al risultato. Usare passed, failed, skipped, allo none. failed comprende anche errori, timeout e annullamenti.
--show-stdout 2.2.1 Determina quando visualizzare l'output standard acquisito di un test. I valori validi sono All, Failede None. Il valore predefinito è All.
--show-stderr 2.2.1 Determina quando visualizzare l'output di errore acquisito del test. I valori validi sono All, Failede None. Il valore predefinito è All.
--show-flaky-tests 2.4.0 Controlla il flaky: riepilogo e l'elenco dei test Flaky per i test che vengono superati dopo un nuovo tentativo. Usare on o off. Il valore predefinito è on. Si applica a MSTest [Retry] e all'estensione per i nuovi tentativi.
--show-slowest-tests 2.4.0 Mostra il numero richiesto di test più lenti nel riepilogo. Per un'esecuzione multimodulo, MTP segnala i test più lenti per ogni modulo.

Combinare passed, failede skipped con virgole, spazi o opzioni ripetute --show-test-results . Non combinare all o none con un altro valore. Un valore esplicito --show-test-results ha la precedenza sulla preimpostazione --output, a prescindere dall'ordine delle opzioni. Il filtro modifica solo i blocchi di risultati; i conteggi di avanzamento e riepilogo rimangono invariati.

Annotazioni

Un trattino (— nella colonna versione MTP contrassegna le opzioni principali che non sono associate a una versione specifica perché sono state disponibili dopo le versioni iniziali della piattaforma.

Annotazioni

A partire da MTP 2.3.0, quando MTP rileva di essere in esecuzione all'interno di un ambiente di strumenti LLM o di IA, sopprime il banner di avvio e modifica il valore predefinito di --show-stdout e --show-stderr da All a Failed per ridurre il rumore.