Relatórios de testes

Estas funcionalidades exigem a instalação de pacotes NuGet adicionais, conforme descrito em cada secção.

Sugestão

Ao usar o Microsoft.Testing.Platform.MSBuild (incluído de forma transitiva pelos runners MSTest, NUnit e xUnit), estas extensões são registadas automaticamente quando instala os seus pacotes NuGet — não são necessárias alterações de código. O registo manual especificado neste artigo só é obrigatório se desativar o ponto de entrada gerado automaticamente ao definir <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>.

Nomes de ficheiros de relatório

Cada extensão de relatório escreve o seu ficheiro no diretório de resultados do teste, que podes definir com a --results-directory opção. Para substituir o nome, utilize a opção correspondente --report-*-filename. Cada secção do relatório indica o nome padrão desse relatório.

Um nome de ficheiro pode incluir um caminho relativo que permanece dentro do diretório de resultados de teste, e pode usar os seguintes itens de substituição (placeholders):

Placeholder Description
{asm} Nome do conjunto da entrada, ou unknown quando não estiver disponível.
{tfm} Identificador da estrutura de destino detetado em tempo de execução, como net9.0.
{arch} Arquitetura de processos, como x64, x86, ou arm64.
{pname} Nome do processo.
{pid} ID do processo.
{time} Marca temporal de alta precisão.

Por exemplo, --report-trx-filename "{asm}_{tfm}_{arch}.trx" reproduz o nome padrão TRX.

Observação

Os nomes dos marcadores de posição fazem distinção entre maiúsculas e minúsculas e utilizam minúsculas. O suporte para marcadores de posição em nomes de ficheiros de relatório está disponível no MTP a partir da versão 2.3.0.

Relatórios de teste do Visual Studio (TRX)

O ficheiro de resultados do Visual Studio (ou TRX) é o formato predefinido para publicar os resultados dos testes. Esta extensão requer o pacote Microsoft.Testing.Extensions.TrxReport NuGet.

Registo manual

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

Observação

Ao usar o registo manual, regista o fornecedor do relatório TRX por último. A implementação atual depende da ordem de registo, por isso registar após todas as outras extensões garante que captura todos os dados de teste.

Observação

Disponível em MTP a partir da versão 1.9.0, o relatório TRX inclui o campo de teste Description .

Observação

Disponível em MTP a partir da versão 2.3.0, os resultados do TRX fluem para o disco à medida que a execução avança. Se o host de teste crashar, o ficheiro TRX mantém os resultados recolhidos antes da falha.

Opções

Opção Description
--report-trx Gera o relatório TRX.
--report-trx-filename O nome do relatório TRX gerado. A partir do MTP 2.3.0, o padrão é a forma determinística {asm}_{tfm}_{arch}.trx ; antes do MTP 2.3.0, o padrão era <UserName>_<MachineName>_<yyyy-MM-dd_HH_mm_ss.fffffff>.trx. Para personalizar o nome, veja Nomes de ficheiros de relatório.

O relatório é salvo dentro da pasta padrão TestResults que pode ser especificada por meio do argumento de linha de comando --results-directory.

Relatórios HTML

O relatório HTML cria um ficheiro HTML interativo e autónomo para uma sessão de teste. Esta extensão requer a Microsoft. Testing.Extensions.HtmlReport pacote NuGet.

Observação

Disponível em MTP a partir da versão 2.3.0. Esta extensão é experimental, e as suas opções e formato de saída podem mudar numa versão futura.

Registo manual

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

Opções

Opção Description
--report-html Gera o relatório HTML.
--report-html-filename O nome do relatório HTML gerado. O valor deve terminar em .html. A predefinição é {asm}_{tfm}_{arch}.html. Para personalizar o nome, veja Nomes de ficheiros de relatório. Requer --report-html.

Relatórios do JUnit

O relatório JUnit cria um ficheiro XML compatível com JUnit para uma sessão de teste. Esta extensão requer a Microsoft. Testing.Extensions.JUnitReport pacote NuGet.

Observação

Disponível em MTP a partir da versão 2.3.0. Esta extensão é experimental, e as suas opções e formato de saída podem mudar numa versão futura.

Registo manual

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

Opções

Opção Description
--report-junit Gera o relatório XML JUnit.
--report-junit-filename O nome do relatório JUnit XML gerado. O valor deve terminar em .xml. A predefinição é {asm}_{tfm}_{arch}.xml. Para personalizar o nome, veja Nomes de ficheiros de relatório. Requer --report-junit.

Relatórios da CTRF

O relatório CTRF cria um ficheiro JSON que utiliza o Formato Comum de Relatório de Teste para uma sessão de teste. Esta extensão requer o pacote NuGet Microsoft.Testing.Extensions.CtrfReport.

Observação

Disponível em MTP a partir da versão 2.3.0. Esta extensão é experimental, e as suas opções e formato de saída podem mudar numa versão futura.

Registo manual

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

Opções

Opção Description
--report-ctrf Gera o relatório JSON CTRF.
--report-ctrf-filename O nome do relatório JSON gerado pela CTRF. O valor deve terminar em .json. A predefinição é <UserName>_<MachineName>_<assembly>_<tfm>_<timestamp>.ctrf.json. Para personalizar o nome, veja Nomes de ficheiros de relatório. Requer --report-ctrf.

Azure DevOps Relatórios

O plugin de relatórios Azure DevOps melhora a execução de testes para programadores que alojam o seu código no GitHub, mas que se baseiam em agentes de compilação do Azure DevOps. Adiciona informação adicional às falhas para mostrar a falha diretamente no GitHub PR.

Anotação de erro na visualização de ficheiros do PR no GitHub

Esta extensão requer o pacote NuGet Microsoft.Testing.Extensions.AzureDevOpsReport .

Registo manual

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

Opções

Opção Versão MTP Description
--report-azdo 1.9.0 Ativa o gerador de relatórios Azure DevOps. Erros e avisos são escritos na saída num formato que o Azure DevOps compreende.
--report-azdo-severity 1.9.0 Gravidade a utilizar para os eventos comunicados. Os valores válidos são error (por defeito) e warning.
--report-azdo-flaky-history 2.3.0 Consulta o histórico dos resultados dos testes no Azure DevOps dos últimos N dias (1-90) e anota as falhas reportadas com contexto de instabilidade. Requer --report-azdo.
--report-azdo-demote-known-flaky 2.3.0 Rebaixa falhas intermitentes na janela de histórico do Azure DevOps (o limiar predefinido é 25%) de erro para aviso. Requer --report-azdo e --report-azdo-flaky-history.
--report-azdo-quarantine-file 2.3.0 Caminho para um ficheiro de texto que lista nomes totalmente qualificados ou padrões glob de teste em quarentena. Falhas de correspondência são reportadas como avisos. Requer --report-azdo.
--report-azdo-summary 2.3.0 Escreve um resumo da tarefa em Markdown no final da execução do teste e carrega-o através de ##vso[task.uploadsummary]. Um argumento opcional de caminho de ficheiro sobrepõe-se à localização padrão ({testResultsDir}/azdo-summary-{tfm}.md). Requer --report-azdo.
--report-azdo-stackframe-filter 2.3.0 Adiciona padrões regex, comparados com o prefixo de tipo totalmente qualificado de cada quadro de pilha, que são ignorados quando a extensão localiza o local de chamada do utilizador para anotar. A opção é repetível, até 16 padrões, e cada padrão é compilado com um tempo limite de correspondência de 500 ms. Estes padrões são aditivos aos prefixos de implementação de asserções MSTest incorporados na extensão. Requer --report-azdo.
--report-azdo-upload-artifacts 2.3.0 Carrega ficheiros de resultados de teste e/ou adiciona etiquetas de build ao Azure DevOps. Os valores válidos são off (por defeito), tags-only, files, e all.
--report-azdo-upload-artifact-include 2.3.0 Inclui ficheiros no carregamento de artefactos do Azure DevOps usando padrões glob relativos ao diretório dos resultados de teste. O valor padrão é **/*. Exige --report-azdo-upload-artifacts que seja um valor diferente de off.
--report-azdo-upload-artifact-exclude 2.3.0 Exclui ficheiros do carregamento de artefactos do Azure DevOps utilizando padrões glob relativos ao diretório dos resultados dos testes. Exige --report-azdo-upload-artifacts que seja um valor diferente de off.
--report-azdo-upload-artifact-name 2.3.0 Substitui o nome do contentor de artefacto do Azure DevOps. O valor padrão é TestResults_{assemblyName}_{tfm}. Exige --report-azdo-upload-artifacts que seja um valor diferente de off.
--publish-azdo-test-results 2.3.0 Publica os resultados dos testes em direto no separador Azure DevOps Tests.
--publish-azdo-run-name 2.3.0 Define um nome personalizado de Azure DevOps test run para publicação de resultados de testes em tempo real. Requer --publish-azdo-test-results.

Observação

A coluna da versão MTP lista a versão MTP em que cada opção ficou disponível pela primeira vez numa versão estável. A extensão Azure DevOps tornou-se estável no MTP 1.9.0 com --report-azdo e --report-azdo-severity; as opções restantes foram adicionadas no MTP 2.3.0.

A extensão deteta automaticamente que está a correr em ambiente de integração contínua (CI) ao verificar a TF_BUILD variável de ambiente.

Relatórios do GitHub Actions

O relatório do GitHub Actions emite comandos de fluxo de trabalho nativos do GitHub Actions, para que as execuções de testes proporcionem uma experiência de topo no runner: grupos de registos por assemblagem, anotações de testes falhados e ignorados (apresentadas no separador Annotations do workflow e, quando é possível resolver a localização de origem, no diff Files changed do pull request), um resumo Markdown da tarefa acrescentado ao ficheiro referenciado por GITHUB_STEP_SUMMARY, e avisos sobre testes lentos.

A extensão só ativa quando a execução está no GitHub Actions (a GITHUB_ACTIONS variável de ambiente é true) e o --report-gh switch está definido; caso contrário, não faz nada. Quando está ativa, cada funcionalidade fica ativa por predefinição e pode ser desativada individualmente através da respetiva opção --report-gh-*.

Observação

Disponível em MTP a partir da versão 2.3.0. Esta extensão é experimental, e as suas opções e formato de saída podem mudar numa versão futura.

Registo manual

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

Opções

Opção Versão MTP Description
--report-gh 2.3.0 Ativa o gerador de relatórios GitHub Actions para que os testes emitam comandos de workflow. Exige que a execução seja no GitHub Actions.
--report-gh-groups 2.3.0 Ativa ou desativa grupos de registos por montagem. Os valores válidos são on (por defeito) e off. Requer --report-gh.
--report-gh-annotations 2.3.0 Ativa ou desativa anotações para testes falhados e saltados. Os valores válidos são on (por defeito) e off. Requer --report-gh.
--report-gh-step-summary 2.3.0 Permite ou desativa a escrita de um resumo de trabalho Markdown no ficheiro referenciado por GITHUB_STEP_SUMMARY. Os valores válidos são on (por defeito) e off. Requer --report-gh.
--report-gh-slow-test-notices 2.3.0 Ativa ou desativa avisos de teste lento. Os valores válidos são on (por defeito) e off. Requer --report-gh.
--report-gh-slow-test-threshold 2.3.0 A duração durante a qual um teste pode ser executado antes de ser emitido um aviso de lentidão do teste. Aceita um número nuo de segundos ou um valor com um sufixo unitário como 90s, 2m, ou 1.5h. A predefinição é 60s. Requer --report-gh.