Compartilhar via


Solução de problemas do Microsoft.Testing.Platform

Este artigo contém diretrizes de solução de problemas para Microsoft.Testing.Platform.

Códigos de saída

Microsoft.Testing.Platform usa códigos de saída conhecidos para comunicar erros de teste ou de aplicativo. Os códigos de saída começam 0 e não são negativos.

Código de saída Detalhes
0 O 0 código de saída indica êxito. Todos os testes que foram escolhidos para serem executados foram executados até a conclusão e não houve erros.
1 O 1 código de saída indica erros desconhecidos e atua como um catch all. Para localizar informações e detalhes adicionais de erro, verifique a saída.
2 Um código de 2 saída é usado para indicar que houve pelo menos uma falha de teste.
3 O código 3 de saída indica que a sessão de teste foi anulada. Uma sessão pode ser anulada usando Ctrl+C, como exemplo.
4 O código 4 de saída indica que a instalação de extensões usadas é inválida e a sessão de testes não pode ser executada.
5 O código 5 de saída indica que os argumentos de linha de comando passados para o aplicativo de teste eram inválidos.
6 (não mais usado) O código 6 de saída não é mais produzido pela plataforma; ele indicou anteriormente que a sessão de teste estava usando um recurso não implementado.
7 O código 7 de saída indica que uma sessão de teste não pôde ser concluída com êxito e provavelmente falhou. É possível que isso tenha sido causado por uma sessão de teste que foi executada por meio do ponto de extensão de um controlador de teste.
8 O código 8 de saída indica que a sessão de teste executou zero testes.
9 O código 9 de saída indica que a política de execução mínima para os testes executados foi violada.
10 O código 10 de saída indica que o adaptador de teste, Testing.Platform Test Framework, MSTest, NUnit ou xUnit, falhou ao executar testes por um motivo de infraestrutura não relacionado ao auto do teste. Um exemplo é falhar em criar uma fixação necessária para testes.
11 O código 11 de saída indica que o processo de teste será encerrado se o processo dependente for encerrado.
12 O código 12 de saída indica que a sessão de teste não pôde ser executada porque o cliente não dá suporte a nenhuma das versões de protocolo com suporte.
13 O código 13 de saída indica que a sessão de teste foi interrompida devido ao alcance do número especificado de testes máximos com falha usando --maximum-failed-tests a opção de linha de comando. Para obter mais informações, consulte a seção Opções na referência de opções da CLI Microsoft.Testing.Platform

Para habilitar o registro detalhado e solucionar problemas, consulte Logging de Diagnóstico.

Ignorar códigos de saída específicos

Microsoft.Testing.Platform foi projetado para ser estrito por padrão, mas permite a configurabilidade. Dessa forma, é possível que os usuários decidam quais códigos de saída devem ser ignorados (um código de saída de 0 será retornado em vez do código de saída original).

Para ignorar códigos de saída específicos, use a opção --ignore-exit-code de linha de comando ou a variável de TESTINGPLATFORM_EXITCODE_IGNORE ambiente. O formato válido aceito é uma lista separada por ponto e vírgula de códigos de saída a serem ignorados (por exemplo, --ignore-exit-code 2;3;8). Um cenário comum é considerar que falhas de teste não devem resultar em um código de saída diferente de zero (que corresponde a ignorar o código 2de saída).

Log de diagnóstico

A plataforma fornece registro de diagnóstico integrado para ajudá-lo a solucionar problemas na execução dos testes. Você pode habilitar o log de diagnóstico por meio de opções de linha de comando ou variáveis de ambiente.

Opções de linha de comando

As opções de plataforma a seguir fornecem informações úteis para solucionar problemas nos seus aplicativos de teste.

  • --info
  • --diagnostic
  • --diagnostic-synchronous-write
  • --diagnostic-verbosity
  • --diagnostic-file-prefix
  • --diagnostic-output-directory

Variáveis de ambiente

Você também pode habilitar os logs de diagnóstico usando as variáveis de ambiente:

Nome da variável de ambiente DESCRIÇÃO
TESTINGPLATFORM_DIAGNOSTIC Se definido como 1, habilita o log de diagnóstico.
TESTINGPLATFORM_DIAGNOSTIC_VERBOSITY Define o nível de verbosidade. Os valores disponíveis são Trace, Debug, Information, Warning, Errorou Critical.
TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_DIRECTORY O diretório de saída do log de diagnóstico, se não for especificado, o arquivo será gerado no diretório padrão TestResults.
TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX O prefixo do nome do arquivo de log. Usa "log_" como padrão.
TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE Força o logger de arquivos embutido a gravar logs de forma síncrona. Útil para cenários em que você não deseja perder nenhuma entrada de log (se o processo falhar). Isso reduz a velocidade da execução do teste.

Observação

As variáveis de ambiente têm precedência sobre os argumentos de linha de comando.

Resolver erros de configuração

Microsoft.Testing.Platform.MSBuild

Veja a seguir erros comuns de configuração relacionados a Microsoft.Testing.Platform.MSBuild.

erro CS8892: O método 'TestingPlatformEntryPoint.Main(string[])' não será usado como um ponto de entrada porque um ponto de entrada síncrono 'Program.Main(string[])' foi encontrado

Definir manualmente um ponto de entrada (Main) em um projeto de teste ou referenciar um projeto de teste de um aplicativo que já tem um ponto de entrada resulta em um conflito com o ponto de entrada gerado por Microsoft.Testing.Platform. Para evitar esse problema, siga uma destas etapas:

  • Remova o ponto de entrada definido manualmente, normalmente o método Main em Program.cs, e permita que a plataforma de teste gere um para você.

  • Desabilite a geração do ponto de entrada definindo a <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint> propriedade do MSBuild.

  • Desabilite completamente a dependência transitiva em Microsoft.Testing.Platform.MSBuild configurando a propriedade MSBuild <IsTestingPlatformApplication>false</IsTestingPlatformApplication> no projeto que faz referência a um projeto de teste. Isso é necessário quando você faz referência a um projeto de teste de um projeto que não é de teste, por exemplo, um aplicativo de console que faz referência a um aplicativo de teste.

Microsoft.Testing.Extensions.Fakes

Erro de simulação Falha ao resolver o caminho do criador a partir das variáveis de ambiente COR_PROFILER_PATH e COR_PROFILER

Esse erro pode ocorrer caso nem todos os assemblies do Fakes estejam presentes na pasta bin.

  • Verifique se o projeto usa o MSTest.SDK ou faz referência a Microsoft.Testing.Extensions.Fakes.
  • Para projetos do .NET Framework, evite definir <PlatformTarget>AnyCPU</PlatformTarget>, pois isso resulta em NuGet não copiando todos os arquivos para a pasta bin.