Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Cada opção de relatório requer o pacote de extensão nomeado na sua secção. Adicione o pacote diretamente, ou use uma configuração ou perfil do SDK de teste que o inclua. As extensões de relatório não fazem parte do núcleo MTP, por isso uma opção como --report-trx a não é reconhecida quando a aplicação de teste não regista a sua extensão. Execute a aplicação de teste com --help, ou execute dotnet test --help em modo MTP, para confirmar que existe uma opção disponível.
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.
Se já existir um nome de ficheiro TRX, HTML ou JUnit predefinido ou explícito para uma origem de teste, a extensão emite um aviso e sobrescreve o ficheiro. A partir do MTP 2.4, o CTRF usa o mesmo comportamento. Para conservar o histórico do relatório, inclua {time}.
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.
Consolidação de relatórios
A partir do MTP 2.4.0, o MTP pós-processa automaticamente artefactos de relatório após uma dotnet test invocação executar múltiplos módulos de teste ou após o suporte a retentativas executar múltiplas tentativas. A funcionalidade é experimental no MTP 2.4.0.
As extensões TRX, JUnit, CTRF e HTML agrupam artefactos compatíveis por tipo de relatório e escrevem um relatório consolidado no subdiretório do merged diretório de resultados de teste. A consolidação CTRF combina os resultados do módulo e agrega as novas tentativas no resultado final do teste, com o respetivo histórico de novas tentativas. A consolidação HTML cria um resumo fundido e preserva os relatórios originais por processo.
Para extensões de relatórios personalizadas, a API experimental IArtifactPostProcessor expõe modos separados TestModules e RetryAttempts de processamento. Para mais informações, consulte As IArtifactPostProcessor extensões.
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.
A partir da versão 2.4 do MTP, o TRX utiliza por predefinição a recuperação com suporte do controlador quando a plataforma tem um controlador do anfitrião de teste. Browser, WASI, iOS e tvOS utilizam o caminho de compatibilidade em processo.
A partir do MTP 2.4, um TRX gerado pelo MTP preserva os metadados do MSTest [WorkItem] e [GitHubWorkItem].
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.
A partir do MSTest.Sdk 4.3, ative esta extensão com <EnableMicrosoftTestingExtensionsJUnitReport>true</EnableMicrosoftTestingExtensionsJUnitReport>. A extensão não faz parte dos perfis Default ou AllMicrosoft do MSTest.Sdk.
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. |
A partir do MTP 2.4, o CTRF preserva todos os resultados quando múltiplos testes usam o mesmo UID. Inclui também anexos de cada teste e de tentativas anteriores e deduz os respetivos tipos MIME a partir dos nomes dos ficheiros.
Para testes repetidos, a CTRF correlaciona as tentativas apenas quando a relação é inequívoca. Depois, regista tentativas anteriores em retryAttempts, define retries e assinala um resultado posterior com êxito como flaky: true. Resultados ambíguos do mesmo UID permanecem separados para que o relatório não associe diagnósticos ao teste errado.
A partir da versão preliminar do MTP 2.5, testId é derivado do UID completo do nó de teste MTP da estrutura. O repórter escapa de valores nos seus namespaces de identidade reservados e usa uma identidade SHA-256 determinística para UIDs longos em vez de os truncar. Cada execução reportada recebe um novo UUID em executionId, e tentativas anteriores recebem o seu próprio attemptId. O campo extra.uid de compatibilidade mantém o UID original do MTP. Os caminhos de anexo mantêm-se com valores opacos e podem apontar para ficheiros locais aos quais um consumidor remoto não pode aceder.
O resumo no terminal identifica os testes instáveis e os testes repetidos. Os relatórios TRX e JUnit mantêm um resultado final por teste em vez de registarem todas as tentativas.
Azure DevOps Relatórios
A extensão de relatório Azure DevOps integra execuções de teste MTP com o Azure Pipelines. Formata erros e avisos para registos de pipeline, adiciona anotações para testes falhados e saltados, cria um resumo de tarefas Markdown e pode agrupar a saída por montagem de teste. A extensão também pode identificar falhas instáveis ou em quarentena, carregar artefactos de teste e transmitir resultados para uma execução de teste Azure DevOps.
Quando aloja o seu código no GitHub mas executa testes em agentes do Azure Pipelines, as anotações de falha podem aparecer diretamente no pull request do 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-groups |
2.4.0 | Ativa ou desativa grupos de registos por montagem. Quando ativado, o resultado de cada assemblagem de testes aparece numa secção colapsável do registo do Azure Pipelines. Os valores válidos são on e off. As compilações de pré-visualização do MTP 2.4.0 têm por defeito on; a versão estável do MTP 2.4.0 tem por defeito off. Requer --report-azdo. |
--report-azdo-annotations |
2.4.0 | Ativa ou desativa anotações para testes falhados e saltados. Os valores válidos são on (por defeito) e off. Requer --report-azdo. |
--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-slow-test-history |
2.3.0 | Consulta o histórico de resultados dos testes Azure DevOps para o número especificado de dias e reduz o limiar por teste ainda em execução para testes com um tempo de execução curto conhecido. Aceita exatamente um inteiro de 1 a 90. Com amostras históricas suficientes, o limiar é o menor entre 60 segundos e a duração p99 histórica multiplicada pelo multiplicador configurado. Requer --report-azdo. |
--report-azdo-slow-test-history-min-sample |
2.3.0 | Define o número mínimo de amostras históricas necessárias antes da extensão usar o histórico de um teste para ajustar o seu limiar de teste lento ou adicionar detalhes de histórico às linhas de saída de teste lento. Aceita exatamente um inteiro maior ou igual a 1. O padrão é 10. Requer --report-azdo-slow-test-history. |
--report-azdo-slow-test-history-multiplier |
2.3.0 | Define o multiplicador aplicado à duração histórica p99 de um teste para calcular o seu limiar de teste lento. Aceita exatamente um valor de ponto flutuante de cultura invariante maior que 0 e, no máximo, 10.000. O padrão é 3. Requer --report-azdo-slow-test-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-{assembly}-{tfm}-{arch}.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 | Envia os resultados para uma execução de testes do Azure DevOps à medida que os testes são concluídos. O separador Testes da build lista a execução concluída. |
--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. |
Warning
Não ative grupos quando múltiplos conjuntos de teste correm em paralelo. Azure DevOps ##[group] e ##[endgroup] comandos de formatação são sequenciais e anónimos. O resultado da montagem em simultâneo pode intercalar-se, causar um aninhamento incorreto de grupos e colocar linhas na montagem errada. Se usares uma versão de pré-visualização do MTP 2.4.0, passa --report-azdo-groups off para desativar grupos. A versão estável do MTP 2.4.0 desativa grupos por defeito. Utilize --report-azdo-groups on apenas para uma única assemblagem ou execução serializada de assemblagem.
Observação
A coluna da versão MTP lista a primeira versão MTP que contém cada opção. 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 ou 2.4.0.
A extensão deteta automaticamente que está a correr num ambiente de integração contínua (CI) ao verificar a TF_BUILD variável de ambiente.
Importante
As consultas de histórico do Azure DevOps requerem TF_BUILD=true, SYSTEM_COLLECTIONURI, SYSTEM_TEAMPROJECT, SYSTEM_ACCESSTOKEN, e BUILD_DEFINITIONID. Se algum valor estiver em falta, o MTP continua sem dados de histórico, salta anotações de histórico instável e usa o limiar estático de 60 segundos para linhas de teste lentas.
A publicação ao vivo com --publish-azdo-test-results requer TF_BUILD=true, SYSTEM_COLLECTIONURI, SYSTEM_TEAMPROJECT, SYSTEM_ACCESSTOKEN, e BUILD_BUILDID. Se algum valor estiver em falta ou inválido, o MTP avisa e não publica a execução do teste.
A partir do MTP 2.4.0, o Azure DevOps Markdown resume os resultados agregados de todos os módulos de teste numa dotnet test invocação. Quando também ativa a cobertura por código, o resumo inclui contagens cobertas e totais, percentagens, resultados de limiar e um indicador quando os dados de cobertura são parciais.
A partir da versão de pré-visualização do MTP 2.5, o resumo apresenta também taxas de sucesso, histórico de testes intermitentes, comparações de duração, ligações de dependência entre testes, diagnósticos de falhas direcionados e uma disposição determinística compacta para execuções multimódulo.
A partir do MTP 2.4, a publicação em direto transfere automaticamente os anexos de ficheiro dos resultados sem êxito para os resultados de testes no Azure DevOps. Os resultados sem êxito incluem resultados falhados, com erro, expirados e cancelados.
Quando um resultado inclui saída padrão ou erro padrão, a extensão pode anexar até 256 KiB de cada um desses fluxos em linha. Cada anexo com backup de ficheiro tem um limite de 16 MiB.
A extensão também envia ficheiros de nível de execução .coverage, .cobertura.xml e .opencover.xml como anexos de cobertura de código. Estes anexos de teste e resultados são separados de --report-azdo-upload-artifacts, que carrega ficheiros selecionados à medida que o Azure Pipelines constrói artefactos.
Para testes repetidos, o Azure DevOps publica as tentativas anteriores como subresultados e anexa, ao subresultado correspondente, os artefactos gerados por cada tentativa. Se a correlação de repetição segura não estiver disponível, a extensão publica um resultado separado em vez de o descartar.
Quando a publicação em direto cria a execução, imprime o URL da execução para que possa acompanhar os resultados antes de esta estar concluída. Também envia pipelineReference e a data de início quando estes são disponibilizados pelo ambiente do pipeline. O separador Testes da build não lista uma execução em curso; indica a execução após a conclusão.
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.
Esta extensão requer a Microsoft. Testing.Extensions.GitHubActionsReport pacote NuGet.
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-*.
Importante
A --report-gh opção pertence a Microsoft.Testing.Extensions.GitHubActionsReport. O pacote GitHubActionsTestLogger oferece uma opção diferente, --report-github. As opções não são aliases e só funcionam quando o projeto de teste regista o pacote que detém a opção.
Observação
A extensão está disponível a partir do MTP 2.3.0. A partir do MTP 2.4.0, os seus pontos de entrada públicos deixaram de ser experimentais.
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 | Controla se a extensão escreve um resumo de trabalho Markdown no ficheiro referenciado por GITHUB_STEP_SUMMARY. Os valores válidos são on (por defeito), off, e, a partir do MTP 2.4.0, on-failure. Requer --report-gh. |
--report-gh-step-summary-sections |
2.4.0 | Seleciona conteúdo resumo. Os valores válidos são test-results, slow-tests, coverage, e all (por defeito). Requer --report-gh e um modo resumo diferente de off. |
--report-gh-failure-details |
2.4.0 | Ativa ou desativa os detalhes limitados sobre falhas no resumo da tarefa. Utilize on (predefinição) ou off. Os detalhes incluem a mensagem, o tipo de exceção, a localização de origem e o rastreio da pilha, quando disponível. Requer --report-gh. |
--report-gh-history |
2.4.0 | Lê e atualiza uma captura limitada do histórico de testes local no caminho de ficheiro especificado. O fluxo de trabalho deve descarregar o snapshot anterior antes da execução e carregar o ficheiro atualizado depois. Requer --report-gh. |
--report-gh-history-window |
2.4.0 | Define a janela de retenção do histórico de 1 a 90 dias. O padrão é 30 dias. Requer --report-gh-history. |
--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. |
A partir do MTP 2.4.0, o GitHub Actions Markdown resume os resultados agregados de todos os módulos de teste numa dotnet test invocação. Quando também ativar a cobertura do código, selecione coverage ou all para incluir contagens cobertas e totais, percentagens, resultados dos limiares e um indicador caso os dados de cobertura sejam parciais.
Os detalhes das falhas permanecem dentro dos limites definidos para a mensagem, a pilha de execução, a contagem de falhas e o resumo global. Quando o conteúdo ultrapassa um limite, o relatório trunca-o ou condensa-o e indica essa redução no resumo.