Microsoft.Testing.Platform (MTP) configurações

O MTP dá suporte ao uso de arquivos de configuração e variáveis de ambiente para configurar o comportamento da plataforma de teste. Este artigo descreve as configurações que você pode usar para configurar a plataforma de teste.

testconfig.json

A plataforma de teste usa um arquivo de configuração chamado [appname].testconfig.json para configurar o comportamento da plataforma de teste. O arquivo testconfig.json é um arquivo JSON que contém as configurações da plataforma de teste.

O arquivo testconfig.json tem a seguinte estrutura:

{
    "platformOptions": {
        "resultDirectory": "./TestResults"
    }
}

A plataforma detectará e carregará automaticamente o arquivo [appname].testconfig.json localizado no diretório de saída do projeto de teste (próximo ao executável).

Ao usar Microsoft.Testing.Platform.MSBuild, você pode simplesmente criar um arquivo testconfig.json que será renomeado automaticamente para [appname].testconfig.json e movido para o diretório de saída do projeto de teste.

A partir do MTP 1.5, você pode usar o argumento --config-file de linha de comando para especificar o caminho para o testconfig.json. Esse arquivo tem precedência sobre o arquivo [appname].testconfig.json .

Observação

O arquivo [appname].testconfig.json será substituído em builds subsequentes.

Usar um testconfig.json centralizado

Se você quiser um único arquivo testconfig.json compartilhado entre vários projetos de teste, poderá colocá-lo em um local central e passá-lo via --config-file. Quando o MSBuild está disponível (por exemplo, dotnet test ou dotnet run), você pode usar a TestingPlatformCommandLineArguments propriedade MSBuild para passar automaticamente o argumento. Adicionar isso a um Directory.Build.props na raiz do repositório garante que todos os projetos de teste usem a mesma configuração:

<PropertyGroup>
  <TestingPlatformCommandLineArguments>
    $(TestingPlatformCommandLineArguments) --config-file $(MSBuildThisFileDirectory)testconfig.json
  </TestingPlatformCommandLineArguments>
</PropertyGroup>

Precedência de configuração

Quando a mesma configuração pode ser especificada de várias maneiras, o MTP a resolve na seguinte ordem (a primeira correspondência prevalece):

  1. Argumentos de linha de comando (por exemplo, --results-directory)
  2. Variáveis de ambiente
  3. configurações de testconfig.json
  4. Padrões internos

Opções de plataforma

A platformOptions seção do arquivo testconfig.json configura o comportamento principal da plataforma de teste. A tabela a seguir lista todas as opções de plataforma com suporte:

Entry Default Descrição
resultDirectory TestResults O diretório em que os resultados do teste são colocados. Pode ser um caminho relativo (resolvido do diretório de trabalho atual) ou um caminho absoluto. A --results-directory opção de linha de comando tem precedência.
exitProcessOnUnhandledException false Quando definido como true, o processo do host de teste é encerrado imediatamente quando ocorrem exceções sem tratamento, em vez de permitir um encerramento normal. A TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION variável de ambiente (valores 1 ou 0) tem precedência.

Observação

Existem opções internas adicionais da plataforma para cenários avançados (como tempos limite de pipes nomeados para controladores de host de teste). Essas opções se destinam ao uso da infraestrutura e não são abordadas aqui.

Exemplo:

{
  "platformOptions": {
    "resultDirectory": "../../TestResults",
    "exitProcessOnUnhandledException": false
  }
}

Variáveis de ambiente no testconfig.json

Observação

Disponível no MTP a partir da versão 2.3.0.

A environmentVariables seção define variáveis de ambiente para o processo de teste antes de começar. Use valores de cadeia de caracteres para cada variável.

{
  "environmentVariables": {
    "DOTNET_ENVIRONMENT": "Development",
    "FEATURE_FLAG": "true"
  }
}

Opções da CLI no testconfig.json

Antes do MTP 2.3.0, recursos da extensão, como crash dump, hang dump, retry, relatórios TRX e cobertura de código, não podem ser configurados por meio de testconfig.json. Esses recursos são configurados exclusivamente por meio de argumentos de linha de comando.

A partir do MTP 2.3.0, o MTP pode ler as opções da CLI de testconfig.json até IConfiguration. Esse suporte inclui opções de extensão, para que você possa usar entradas JSON para opções que você não deseja passar na linha de comando a cada execução. Os argumentos de linha de comando ainda têm precedência.

Para obter uma referência completa das opções de linha de comando, consulte a referência de opções da CLI mtp.

Testar configurações específicas da estrutura

As estruturas de teste podem definir suas próprias seções de configuração no arquivo testconfig.json . Consulte a documentação da estrutura de teste:

  • MSTest: Configurar o MSTest — testconfig.json
  • xUnit.net v3: xUnit.net testconfig.json
  • NUnit: consulte a documentação do NUnit para obter informações sobre o suporte mais recente ao Microsoft.Testing.Platform.
  • TUnit: consulte a documentação do TUnit para obter as informações mais recentes sobre o suporte ao Microsoft.Testing.Platform.

Exemplo de testconfig.json

O exemplo a seguir mostra um arquivo testconfig.json que define as opções de plataforma e as configurações do MSTest:

{
  "platformOptions": {
    "resultDirectory": "./TestResults"
  },
  "mstest": {
    "parallelism": {
      "enabled": true,
      "workers": 4,
      "scope": "method"
    },
    "timeout": {
      "test": 30000
    },
    "execution": {
      "considerFixturesAsSpecialTests": true
    }
  }
}

Migrando de .runsettings para testconfig.json

Se você estiver migrando de um arquivo .runsettings , a tabela a seguir mapeará as configurações comuns para seus testconfig.json equivalentes ou alternativas:

Configuração .runsettings equivalente ao testconfig.json Observações
RunConfiguration/ResultsDirectory platformOptions.resultDirectory
RunConfiguration/MaxCpuCount Nenhum equivalente O paralelismo em nível de processo é controlado por dotnet test --max-parallel-test-modules ou pela opção /m do MSBuild.
MSTest/* mstest.* Consulte Configurar o MSTest — testconfig.json.
xUnit/* xUnit.* Consulte xUnit.net testconfig.json.
LoggerRunSettings/Loggers Opções da CLI Use --report-trx ou opções de CLI semelhantes. A partir da versão 2.3.0 do MTP, o MTP pode ler opções de CLI do arquivo testconfig.json.
DataCollectionRunSettings (culpa) Opções da CLI Use as opções de linha de comando --crashdump e --hangdump. A partir da versão 2.3.0 do MTP, o MTP pode ler opções de CLI a partir de testconfig.json. Consulte Despejos de falha e travamento.
DataCollectionRunSettings (cobertura) Opções da CLI Use a opção de CLI --coverage. A partir do MTP 2.3.0, o MTP pode ler as opções da CLI de testconfig.json. Consulte a cobertura do Código.
TestRunParameters --test-parameter CLI Use --test-parameter key=value na linha de comando.

Variáveis de ambiente

As variáveis de ambiente podem ser usadas para fornecer algumas informações de configuração de runtime.

Observação

As variáveis de ambiente têm precedência sobre as configurações no arquivo testconfig.json .

Variável de ambiente TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION

Quando configurado como 1, o processo host de teste é encerrado imediatamente ao ocorrerem exceções não tratadas. Quando definido como 0, a plataforma permite o desligamento normal. Essa configuração tem precedência sobre a platformOptions:exitProcessOnUnhandledException configuração.

Variável de ambiente TESTINGPLATFORM_DEFAULT_HANG_TIMEOUT

Substitui o tempo limite padrão (300 segundos) usado para conexões de pipes nomeados entre o controlador de host de teste e o host de teste. O valor deve ser uma TimeSpancadeia de caracteres compatível.

Variável de ambiente TESTINGPLATFORM_UI_LANGUAGE

A partir do MTP 1.5, essa variável de ambiente define o idioma da plataforma para exibir mensagens e logs usando um valor de localidade, como en-us. Esse idioma tem precedência sobre as linguagens do SDK do Visual Studio e do .NET. Os valores com suporte são os mesmos do Visual Studio. Para obter mais informações, confira a seção sobre como alterar o idioma do instalador na documentação de instalação do Visual Studio.

Variável de ambiente TESTINGPLATFORM_DIAGNOSTIC

Se definido como 1, habilita o log de diagnóstico.

Variável de ambiente TESTINGPLATFORM_DIAGNOSTIC_VERBOSITY

Define o nível de verbosidade quando o diagnóstico está habilitado. Os valores disponíveis são Trace, Debug, Information, Warning, Errorou Critical.

Variável de ambiente 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 TestResults padrão.

Variável de ambiente TESTINGPLATFORM_DIAGNOSTIC_FILE_PREFIX

O prefixo do nome do arquivo de log. Usa "log_" como padrão. Corresponde à opção --diagnostic-file-prefix de linha de comando.

Observação

Esse nome de variável de ambiente está disponível no MTP a partir da versão 2.3.0. A variável de ambiente herdada TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX ainda é respeitada pela compatibilidade com versões anteriores, mas foi preterida e pode ser removida em uma versão principal futura. Quando ambas as variáveis são definidas, TESTINGPLATFORM_DIAGNOSTIC_FILE_PREFIX tem precedência.

Variável de ambiente TESTINGPLATFORM_DIAGNOSTIC_SYNCHRONOUS_WRITE

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. Corresponde à opção --diagnostic-synchronous-write de linha de comando.

Observação

Esse nome de variável de ambiente está disponível no MTP a partir da versão 2.3.0. A variável de ambiente herdada TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE ainda é respeitada pela compatibilidade com versões anteriores, mas foi preterida e pode ser removida em uma versão principal futura. Quando ambas as variáveis são definidas, TESTINGPLATFORM_DIAGNOSTIC_SYNCHRONOUS_WRITE tem precedência.

Variável de ambiente TESTINGPLATFORM_EXITCODE_IGNORE

Uma lista separada por ponto-e-vírgula de códigos de saída a serem ignorados. Quando um código de saída é ignorado, o processo retorna 0 em vez disso. Por exemplo, TESTINGPLATFORM_EXITCODE_IGNORE=2;8 ignora falhas de teste e cenários sem testes executados.

Variável de ambiente TESTINGPLATFORM_NOBANNER

Quando definido como 1 ou true, suprime o banner de inicialização, a mensagem de direitos autorais e o banner de telemetria. Equivalente à opção --no-banner de linha de comando. A DOTNET_NOLOGO variável de ambiente tem o mesmo efeito.

Variável de ambiente NO_COLOR

Quando definido como qualquer valor não vazio, suprime toda a saída de cor ANSI. O MTP respeita a convenção NO_COLOR.

Observação

Disponível no MTP a partir da versão 2.3.0.

Variável de ambiente DOTNET_NOLOGO

Quando definido como 1 ou true, suprime o banner de inicialização, a mensagem de direitos autorais e o banner de telemetria. Essa é a variável de ambiente padrão da CLI .NET e é respeitada pelo MTP. Consulte também TESTINGPLATFORM_NOBANNER.

Variável de ambiente TESTINGPLATFORM_WAIT_ATTACH_DEBUGGER

Quando definido como 1, o processo de teste pausa na inicialização e aguarda a conexão de um depurador antes de prosseguir. Equivalente à opção --debug de linha de comando. Não há suporte em plataformas de navegador.

Observação

Essa variável de ambiente está disponível no MTP a partir da versão 1.6.0.

Variável de ambiente TESTINGPLATFORM_LAUNCH_ATTACH_DEBUGGER

Quando definido como 1, o processo de teste chama Debugger.Launch() na inicialização, o que solicita ao sistema que inicie um depurador just-in-time e o conecte ao processo. Use esta variável para depurar problemas de inicialização (por exemplo, handshake no modo servidor) que ocorrem antes que você possa se conectar manualmente. Em plataformas não Windows, o comportamento depende do depurador JIT configurado.

Observação

Essa variável de ambiente está disponível no MTP a partir da versão 1.6.0.

Observação

As variáveis de ambiente relacionadas ao diagnóstico têm precedência sobre seus argumentos de linha de comando correspondentes --diagnostic-* .

Consulte também