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 ordem a seguir (a primeira correspondência vence):

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

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 limites de tempo de pipes nomeados para controladores do 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
  }
}

As opções de extensão estão disponíveis apenas pela CLI

Recursos da extensão, como dump de falha, dump de travamento, nova tentativa, relatórios TRX e cobertura de código, não são configuráveis via testconfig.json. Esses recursos são configurados exclusivamente por meio de argumentos de linha de comando.

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 Apenas CLI Use --report-trx ou opções de CLI semelhantes.
DataCollectionRunSettings (culpa) Apenas CLI Use as opções de linha de comando --crashdump e --hangdump. Veja Arquivos de despejo de falhas e travamentos.
DataCollectionRunSettings (cobertura) Somente CLI Use a opção de CLI --coverage. 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 pipe nomeado entre o controlador do 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_OUTPUT_FILEPREFIX

O prefixo do nome do arquivo de log. Usa "log_" como padrão.

Variável de ambiente 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.

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.

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