Rapporti di test

Ogni opzione del report richiede il pacchetto di estensione denominato nella relativa sezione. Aggiungere direttamente il pacchetto oppure usare una configurazione o un profilo dell'SDK di test che lo include. Le estensioni del report non fanno parte del core MTP, quindi un'opzione come --report-trx non viene riconosciuta quando l'applicazione di test non registra l'estensione. Eseguire l'applicazione di test con --helpo eseguire dotnet test --help in modalità MTP per verificare che sia disponibile un'opzione.

Suggerimento

Quando si usa Microsoft.Testing.Platform.MSBuild (incluso transitivamente da MSTest, NUnit e runner xUnit), queste estensioni vengono registrate automaticamente quando si installano i pacchetti NuGet, senza necessità di modifiche al codice. La registrazione manuale specificata in questo articolo è necessaria solo se il punto di ingresso generato automaticamente è stato disabilitato impostando <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>.

Nomi file del report

Ogni estensione del report scrive il file nella directory dei risultati del test, che è possibile impostare con l'opzione --results-directory . Per eseguire l'override del nome, usare l'opzione corrispondente --report-*-filename . Ogni sezione del report elenca il nome predefinito per il report.

Un nome file può includere un percorso relativo che rimane all'interno della directory dei risultati del test e può usare i seguenti elementi di sostituzione (segnaposto):

Segnaposto Descrzione
{asm} Nome dell'assembly di ingresso, o unknown quando non è disponibile.
{tfm} Identificatore del framework di destinazione rilevato in fase di esecuzione, ad esempio net9.0.
{arch} Architettura del processo, ad esempio x64, x86o arm64.
{pname} Nome del processo.
{pid} ID del processo.
{time} Timestamp ad alta precisione.

Ad esempio, --report-trx-filename "{asm}_{tfm}_{arch}.trx" riproduce il nome TRX predefinito.

Se esiste già un nome di file TRX, HTML o JUnit predefinito o esplicito per un'origine di test, l'estensione avvisa e sovrascrive il file. A partire dall'anteprima di MTP 2.4, CTRF usa lo stesso comportamento. Per conservare la cronologia dei report, includere {time}.

Annotazioni

I nomi segnaposto fanno distinzione tra maiuscole e minuscole e usano lettere minuscole. Il supporto segnaposto per i nomi dei file di report è disponibile in MTP a partire dalla versione 2.3.0.

Consolidamento dei report

A partire dalla versione 2.4.0 di MTP, MTP esegue automaticamente la post-elaborazione degli artefatti del report dopo che un'invocazione dotnet test esegue più moduli di test o dopo che il supporto per i nuovi tentativi esegue più tentativi. La funzionalità è sperimentale in MTP 2.4.0.

Le estensioni TRX, JUnit, CTRF e HTML raggruppano gli artefatti compatibili in base al tipo di report e scrivono un report consolidato nella sottodirectory merged della directory dei risultati dei test. Il consolidamento CTRF combina i risultati del modulo e raggruppa i tentativi di riesecuzione nel risultato finale del test con la relativa cronologia. Il consolidamento HTML crea un riepilogo unito e mantiene i report originali per processo.

Per le estensioni di report personalizzati, l'API sperimentale IArtifactPostProcessor espone modalità di elaborazione separate RetryAttempts e TestModules. Per altre informazioni, vedere EstensioniIArtifactPostProcessor.

Report di test di Visual Studio (TRX)

Il file dei risultati del test Visual Studio (o TRX) è il formato predefinito per la pubblicazione dei risultati dei test. Questa estensione richiede il pacchetto NuGet Microsoft.Testing.Extensions.TrxReport .

Registrazione manuale

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddTrxReportProvider();

Annotazioni

Quando si usa la registrazione manuale, registrare il provider di report TRX per ultimo. L'implementazione corrente dipende dall'ordine di registrazione, quindi la registrazione dopo tutte le altre estensioni garantisce che acquisisca tutti i dati di test.

Annotazioni

Disponibile in MTP a partire dalla versione 1.9.0, il report TRX include il campo di test Description .

Annotazioni

Disponibile in MTP a partire dalla versione 2.3.0, il flusso dei risultati TRX viene trasmesso su disco man mano che l'esecuzione procede. Se l'host di test si arresta in modo anomalo, il file TRX mantiene i risultati raccolti prima dell'arresto anomalo.

A partire dall'anteprima di MTP 2.4, un TRX generato da MTP preserva i metadati di MSTest [WorkItem] e [GitHubWorkItem].

Options

Opzione Descrzione
--report-trx Genera il report TRX.
--report-trx-filename Nome del rapporto TRX generato. A partire da MTP 2.3.0, il valore predefinito è il formato deterministico {asm}_{tfm}_{arch}.trx ; prima di MTP 2.3.0, il valore predefinito era <UserName>_<MachineName>_<yyyy-MM-dd_HH_mm_ss.fffffff>.trx. Per personalizzare il nome, vedere Nomi di file di report.

Il report viene salvato all'interno della cartella predefinita TestResults che può essere specificata tramite l'argomento della riga di comando --results-directory.

Report in HTML

Il report HTML crea un file HTML interattivo e autonomo per una sessione di test. Questa estensione richiede il pacchetto NuGet Microsoft.Testing.Extensions.HtmlReport.

Annotazioni

Disponibile in MTP a partire dalla versione 2.3.0. Questa estensione è sperimentale e le opzioni e il formato di output potrebbero cambiare in una versione futura.

Registrazione manuale

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddHtmlReportProvider();

Options

Opzione Descrzione
--report-html Genera il report HTML.
--report-html-filename Nome del report HTML generato. Il valore deve terminare con .html. Il valore predefinito è {asm}_{tfm}_{arch}.html. Per personalizzare il nome, vedere Nomi di file di report. Richiede --report-html.

Report JUnit

Il report JUnit crea un file XML compatibile con JUnit per una sessione di test. Questa estensione richiede il pacchetto NuGet Microsoft.Testing.Extensions.JUnitReport.

Annotazioni

Disponibile in MTP a partire dalla versione 2.3.0. Questa estensione è sperimentale e le opzioni e il formato di output potrebbero cambiare in una versione futura.

A partire da MSTest.Sdk 4.3, abilitare questa estensione con <EnableMicrosoftTestingExtensionsJUnitReport>true</EnableMicrosoftTestingExtensionsJUnitReport>. L'estensione non fa parte dei profili MSTest.Sdk Default o AllMicrosoft.

Registrazione manuale

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddJUnitReportProvider();

Options

Opzione Descrzione
--report-junit Genera il report XML JUnit.
--report-junit-filename Nome del report XML JUnit generato. Il valore deve terminare con .xml. Il valore predefinito è {asm}_{tfm}_{arch}.xml. Per personalizzare il nome, vedere Nomi di file di report. Richiede --report-junit.

Rapporti CTRF

Il report CTRF crea un file JSON che usa Common Test Report Format per una sessione di test. Questa estensione richiede il pacchetto NuGet Microsoft.Testing.Extensions.CtrfReport.

Annotazioni

Disponibile in MTP a partire dalla versione 2.3.0. Questa estensione è sperimentale e le opzioni e il formato di output potrebbero cambiare in una versione futura.

Registrazione manuale

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddCtrfReportProvider();

Options

Opzione Descrzione
--report-ctrf Genera il report JSON CTRF.
--report-ctrf-filename Il nome del report JSON CTRF generato. Il valore deve terminare con .json. Il valore predefinito è <UserName>_<MachineName>_<assembly>_<tfm>_<timestamp>.ctrf.json. Per personalizzare il nome, vedere Nomi di file di report. Richiede --report-ctrf.

A partire dall'anteprima di MTP 2.4, CTRF mantiene ogni risultato quando più test usano lo stesso UID. Include anche allegati per test e tentativi precedenti e deduce i relativi tipi MIME dai nomi di file.

Per i test ripetuti, CTRF correla i tentativi solo quando la relazione non è ambigua. Registra quindi i tentativi precedenti in retryAttempts, imposta retriese contrassegna un risultato positivo successivo come flaky: true. I risultati ambigui con lo stesso UID rimangono separati affinché il report non associ i dati diagnostici al test sbagliato.

Il riepilogo nel terminale identifica i test instabili e quelli rieseguiti. I report TRX e JUnit mantengono un risultato finale per ogni test anziché registrare ogni tentativo.

I report di Azure DevOps

Azure DevOps plugin di report migliora l'esecuzione dei test per gli sviluppatori che ospitano il codice su GitHub, ma compilano su agenti di compilazione di Azure DevOps. Aggiunge informazioni aggiuntive ai guasti per mostrare il problema direttamente nella pull request di GitHub.

annotazione Errore nella visualizzazione dei file della richiesta pull GitHub

Questa estensione richiede il pacchetto NuGet Microsoft.Testing.Extensions.AzureDevOpsReport .

Registrazione manuale

var builder = await TestApplication.CreateBuilderAsync(args);
builder.TestHost.AddAzureDevOpsProvider();

Options

Opzione Versione MTP Descrzione
--report-azdo 1.9.0 Abilita il generatore di report Azure DevOps. Gli errori e gli avvisi vengono scritti nell'output in un formato comprensibile Azure DevOps.
--report-azdo-severity 1.9.0 Gravità da usare per gli eventi segnalati. I valori validi sono error (impostazione predefinita) e warning.
--report-azdo-groups 2.4.0 Abilita o disabilita i gruppi di log per ogni assembly. Quando è abilitata, l'output di ogni assembly di test viene visualizzato in una sezione comprimibile del log di Azure Pipelines. I valori validi sono on e off. Le build di anteprima di MTP 2.4.0 usano on come impostazione predefinita; la versione stabile di MTP 2.4.0 usa off come impostazione predefinita. Richiede --report-azdo.
--report-azdo-annotations 2.4.0 Abilita o disabilita le annotazioni per i test non riusciti e ignorati. I valori validi sono on (impostazione predefinita) e off. Richiede --report-azdo.
--report-azdo-flaky-history 2.3.0 Interroga la cronologia dei risultati dei test di Azure DevOps degli ultimi N giorni (1-90) e annota gli esiti negativi segnalati con informazioni sul carattere intermittente. Richiede --report-azdo.
--report-azdo-demote-known-flaky 2.3.0 Declassa da errori ad avvisi gli errori intermittenti nella finestra della cronologia di Azure DevOps quando sono sufficientemente frequenti (la soglia predefinita è del 25%). Richiede --report-azdo e --report-azdo-flaky-history.
--report-azdo-quarantine-file 2.3.0 Percorso di un file di testo in cui sono elencati i nomi completi dei test in quarantena o i modelli GLOB. Gli errori corrispondenti vengono segnalati come avvisi. Richiede --report-azdo.
--report-azdo-summary 2.3.0 Scrive un riepilogo del job in Markdown al termine dell'esecuzione del test e lo carica tramite ##vso[task.uploadsummary]. Un argomento percorso file facoltativo sostituisce il percorso predefinito ({testResultsDir}/azdo-summary-{tfm}.md). Richiede --report-azdo.
--report-azdo-stackframe-filter 2.3.0 Aggiunge modelli regex, confrontati con il prefisso di tipo completo di ogni stack frame, ignorati quando l'estensione individua il sito di chiamata dell'utente per aggiungere annotazioni. L'opzione è ripetibile, fino a 16 modelli e ogni modello viene compilato con un timeout di corrispondenza di 500 ms. Questi modelli si aggiungono ai prefissi integrati dell’estensione per l’implementazione delle asserzioni MSTest. Richiede --report-azdo.
--report-azdo-upload-artifacts 2.3.0 Carica i file dei risultati del test e/o aggiunge tag di compilazione a Azure DevOps. I valori validi sono off (impostazione predefinita), tags-only, filese all.
--report-azdo-upload-artifact-include 2.3.0 Include i file nel caricamento dell'artefatto Azure DevOps usando modelli GLOB relativi alla directory dei risultati del test. Di default è **/*. Richiede --report-azdo-upload-artifacts che sia un valore diverso da off.
--report-azdo-upload-artifact-exclude 2.3.0 Esclude i file dal caricamento dell'artefatto Azure DevOps usando modelli GLOB relativi alla directory dei risultati del test. Richiede --report-azdo-upload-artifacts che sia un valore diverso da off.
--report-azdo-upload-artifact-name 2.3.0 Sostituisce il nome del contenitore artefatto di Azure DevOps. Di default è TestResults_{assemblyName}_{tfm}. Richiede --report-azdo-upload-artifacts che sia un valore diverso da off.
--publish-azdo-test-results 2.3.0 Trasmette i risultati in streaming a un'esecuzione di test di Azure DevOps man mano che i test vengono completati. La scheda Test della compilazione elenca l'esecuzione completata.
--publish-azdo-run-name 2.3.0 Imposta un nome di esecuzione di test personalizzato Azure DevOps per la pubblicazione dei risultati del test live. Richiede --publish-azdo-test-results.

Avvertimento

Non abilitare i gruppi quando più assembly di test vengono eseguiti in parallelo. ##[group] Azure DevOps e ##[endgroup] i comandi di formattazione sono sequenziali e anonimi. L'output dell'assemblaggio simultaneo può interlearsi, causare un annidamento errato dei gruppi e collocare righe nell'assemblaggio sbagliato. Se utilizzi una build di anteprima di MTP 2.4.0, passa --report-azdo-groups off per disabilitare i gruppi. La versione stabile di MTP 2.4.0 disabilita i gruppi per impostazione predefinita. Passa --report-azdo-groups on solo per un solo assembly o per l'esecuzione serializzata di un assembly.

Annotazioni

La colonna versione MTP elenca la prima versione MTP che contiene ogni opzione. L'estensione Azure DevOps è diventata stabile in MTP 1.9.0 con --report-azdo e --report-azdo-severity; le opzioni rimanenti sono state aggiunte in MTP 2.3.0 o 2.4.0.

L'estensione rileva automaticamente che è in esecuzione nell'ambiente di integrazione continua (CI) controllando la TF_BUILD variabile di ambiente.

A partire da MTP 2.4.0, Azure DevOps Markdown riepiloga i risultati aggregati in ogni modulo di test in una dotnet test chiamata. Quando si abilita anche il code coverage, il riepilogo include conteggi coperti e totali, percentuali, risultati di soglia e un indicatore quando i dati di copertura sono parziali.

Nell'anteprima di MTP 2.4, la pubblicazione in tempo reale carica automaticamente gli allegati dei file per i risultati dei test non riusciti nei risultati dei test di Azure DevOps. I risultati non riusciti includono esito negativo, errore, timeout e risultati annullati.

Quando un risultato fornisce un output standard o un errore standard, l'estensione può collegare fino a 256 KiB di ogni flusso inline. Ogni allegato supportato da file ha un limite di 16 MiB.

L'estensione carica anche i file .coverage, .cobertura.xml e .opencover.xml a livello di esecuzione come allegati di copertura del codice. Questi allegati relativi all'esecuzione dei test e ai risultati sono separati da --report-azdo-upload-artifacts, che carica i file selezionati come artefatti di compilazione di Azure Pipelines.

Per i test ritentati, Azure DevOps pubblica i tentativi precedenti come subresult e associa gli artefatti di ogni tentativo al sottoresult che li ha generati. Se la correlazione tra tentativi sicuri non è disponibile, l'estensione pubblica un risultato separato anziché eliminarlo.

Quando la pubblicazione dinamica crea l'esecuzione, stampa l'URL di esecuzione in modo da poter seguire i risultati prima del completamento. Invia anche pipelineReference e la data di inizio quando l'ambiente della pipeline li rende disponibili. La scheda Test della compilazione non elenca un'esecuzione in corso; elenca l'esecuzione dopo il completamento.

Report di GitHub Actions

Il report GitHub Actions genera comandi di workflow nativi di GitHub Actions, in modo che le esecuzioni dei test offrano un'esperienza ottimale sul runner: gruppi di log per assembly, annotazioni per i test non riusciti e ignorati (visibili nella scheda Annotations del workflow e, quando la posizione del codice sorgente può essere risolta, nel diff della scheda Files changed della pull request), un riepilogo del job in Markdown aggiunto al file a cui fa riferimento GITHUB_STEP_SUMMARY, e avvisi sui test lenti.

Questa estensione richiede il pacchetto NuGet Microsoft.Testing.Extensions.GitHubActionsReport.

L'estensione viene attivata solo quando l'esecuzione è in GitHub Actions (la GITHUB_ACTIONS variabile di ambiente è true) e l'opzione --report-gh è impostata; in caso contrario, non esegue alcuna operazione. Quando attiva, ogni funzionalità è abilitata per impostazione predefinita e può essere disattivata singolarmente con la relativa --report-gh-* opzione.

Importante

L'opzione --report-gh appartiene a Microsoft.Testing.Extensions.GitHubActionsReport. Il pacchetto GitHubActionsTestLogger offre un'opzione diversa, --report-github. Le opzioni non sono alias e funzionano solo quando il progetto di test registra il pacchetto proprietario dell'opzione .

Annotazioni

L'estensione è disponibile a partire da MTP 2.3.0. A partire da MTP 2.4.0, i punti di ingresso pubblici non sono più sperimentali.

Registrazione manuale

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddGitHubActionsProvider();

Options

Opzione Versione MTP Descrzione
--report-gh 2.3.0 Abilita il generatore di report GitHub Actions in modo che le esecuzioni di test generano comandi del flusso di lavoro. Richiede che l'esecuzione avvenga su GitHub Actions.
--report-gh-groups 2.3.0 Abilita o disabilita i gruppi di log per ogni assembly. I valori validi sono on (impostazione predefinita) e off. Richiede --report-gh.
--report-gh-annotations 2.3.0 Abilita o disabilita le annotazioni per i test non riusciti e ignorati. I valori validi sono on (impostazione predefinita) e off. Richiede --report-gh.
--report-gh-step-summary 2.3.0 Controlla se l'estensione scrive un riepilogo del processo Markdown nel file a cui fa GITHUB_STEP_SUMMARYriferimento . I valori validi sono on (impostazione predefinita), offe, a partire da MTP 2.4.0, on-failure. Richiede --report-gh.
--report-gh-step-summary-sections 2.4.0 Seleziona il contenuto di riepilogo. I valori validi sono test-results, slow-tests, coveragee all (impostazione predefinita). Richiede --report-gh e una modalità di riepilogo diversa da off.
--report-gh-failure-details 2.4.0 Abilita o disabilita i dettagli limitati sugli errori nel riepilogo del processo. Usare on (impostazione predefinita) o off. I dettagli includono il messaggio, il tipo di eccezione, il percorso di origine e l'analisi dello stack, se disponibili. Richiede --report-gh.
--report-gh-history 2.4.0 Legge e aggiorna uno snapshot locale della cronologia dei test di dimensioni limitate nel percorso di file specificato. Il flusso di lavoro deve scaricare lo snapshot precedente prima dell'esecuzione e caricare il file aggiornato in un secondo momento. Richiede --report-gh.
--report-gh-history-window 2.4.0 Imposta il periodo di conservazione della cronologia da 1 a 90 giorni. Il valore predefinito è 30 giorni. Richiede --report-gh-history.
--report-gh-slow-test-notices 2.3.0 Abilita o disabilita gli avvisi di test lenti. I valori validi sono on (impostazione predefinita) e off. Richiede --report-gh.
--report-gh-slow-test-threshold 2.3.0 Tempo di esecuzione di un test prima che venga emesso un avviso di test lento. Accetta un numero bare di secondi o un valore con un suffisso di unità, 90sad esempio , 2mo 1.5h. Il valore predefinito è 60s. Richiede --report-gh.

A partire da MTP 2.4.0, GitHub Actions markdown riepiloga i risultati aggregati in ogni modulo di test in una dotnet test chiamata. Quando si abilita anche la copertura del codice, selezionare coverage o all per includere il numero di elementi coperti e il totale, le percentuali, i risultati delle soglie e un indicatore che segnala quando i dati di copertura sono parziali.

I dettagli degli errori rientrano nei limiti previsti per messaggio, stack, conteggio degli errori e riepilogo complessivo. Quando il contenuto supera un limite, il rapporto lo tronca o lo sintetizza e indica tale riduzione nel riepilogo.