Configurações do Microsoft.Testing.Platform (MTP)

O MTP suporta a utilização de ficheiros de configuração e variáveis de ambiente para configurar o comportamento da plataforma de teste. Este artigo descreve as definições de configuração 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 definições de configuração para a plataforma de teste.

O arquivo testconfig.json tem a seguinte estrutura:

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

A plataforma detetará e carregará automaticamente o arquivo de.testconfig.json [appname] 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 de testconfig.json que será automaticamente renomeado para .testconfig.json [appname] e movido para o diretório de saída do projeto de teste.

A partir do MTP 1.5, podes usar o argumento --config-file da linha de comandos para especificar o caminho até ao testconfig.json. Esse arquivo tem precedência sobre o arquivo.testconfig.json [appname].

Observação

O arquivo.testconfig.json [appname] será substituído em compilações subsequentes.

Utilize um testconfig.json centralizado

Se quiser um único testconfig.json partilhado por vários projetos de teste, pode colocá-lo numa localização central e passá-lo através de --config-file. Quando o MSBuild está disponível (por exemplo, dotnet test ou dotnet run), pode usar a TestingPlatformCommandLineArguments propriedade MSBuild para passar automaticamente o argumento. Adicionar isto a um Directory.Build.props na raiz do repositório garante que todos os projetos de teste usam a mesma configuração:

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

Precedência de configuração

Quando a mesma definição pode ser especificada de várias formas, o MTP resolve-a pela seguinte ordem (vence a primeira partida):

  1. Argumentos de linha de comandos (por exemplo, --results-directory)
  2. Variáveis de ambiente
  3. testconfig.json definições
  4. Predefinições incorporadas

Opções da plataforma

A platformOptions secção do ficheirotestconfig.json configura o comportamento central da plataforma de teste. A tabela seguinte lista todas as opções de plataforma suportadas:

Entrada Predefinição Descrição
resultDirectory TestResults O diretório onde os resultados dos testes são colocados. Pode ser um caminho relativo (resolvido a partir do diretório de trabalho atual) ou um caminho absoluto. A --results-directory opção de linha de comandos tem prioridade.
exitProcessOnUnhandledException false Quando definido para true, o processo anfitrião de testes termina imediatamente perante exceções não tratadas, em vez de permitir um encerramento normal. A TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION variável ambiente (valores 1 ou 0) tem prioridade.

Observação

Existem opções internas adicionais de plataforma para cenários avançados (como timeouts com canos nomeados para controladores anfitriões de teste). Estas opções destinam-se à 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 através da CLI

Funcionalidades de extensão como crash dump, hang dump, retry, relatórios TRX e cobertura de códigonão são configuráveis via testconfig.json. Estas funcionalidades são configuradas exclusivamente através de argumentos de linha de comandos.

Para uma referência completa das opções de linha de comandos, veja a referência às opções de CLI do MTP.

Configurações específicas do framework de teste

Os frameworks de teste podem definir as suas próprias secções de configuração no ficheirotestconfig.json . Consulte a documentação do seu framework de teste:

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

Exemplo de testconfig.json

O exemplo seguinte mostra um ficheirotestconfig.json que configura as opções da plataforma e as definições do MSTest:

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

Migração de .runsettings para testconfig.json

Se estiver a migrar de um ficheiro .runsettings, a tabela seguinte estabelece a correspondência entre definições comuns e os respetivos equivalentes ou alternativas em testconfig.json:

definição de .runsettings testconfig.json equivalente Notes
RunConfiguration/ResultsDirectory platformOptions.resultDirectory
RunConfiguration/MaxCpuCount Sem equivalente O paralelismo ao nível do processo é controlado pela opção dotnet test --max-parallel-test-modules ou pela opção MSBuild /m.
MSTest/* mstest.* Veja Configurar MSTest — testconfig.json.
xUnit/* xUnit.* Veja xUnit.net testconfig.json.
LoggerRunSettings/Loggers Apenas CLI Utilize --report-trx ou opções de CLI semelhantes.
DataCollectionRunSettings (responsabilidade) Apenas CLI Utilize as opções da CLI --crashdump e --hangdump. Consulte despejos de falha e bloqueio.
DataCollectionRunSettings (cobertura) Apenas CLI Utilize a opção de CLI --coverage. Consulte cobertura do código.
TestRunParameters --test-parameter Interface de Linha de Comandos (CLI) Use --test-parameter key=value na linha de comandos.

Variáveis de ambiente

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

Observação

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

TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION variável de ambiente

Quando definido como 1, o processo anfitrião de teste termina imediatamente quando ocorrem exceções não tratadas. Quando configurado para 0, a plataforma permite um encerramento normal. Esta configuração tem prioridade sobre a platformOptions:exitProcessOnUnhandledException configuração.

TESTINGPLATFORM_DEFAULT_HANG_TIMEOUT variável de ambiente

Substitui o tempo limite predefinido (300 segundos) utilizado para ligações por canal nomeado entre o controlador do anfitrião de teste e o anfitrião de teste. O valor deve ser uma cadeia de caracteres compatível com TimeSpan.

TESTINGPLATFORM_UI_LANGUAGE variável de ambiente

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

TESTINGPLATFORM_DIAGNOSTIC variável de ambiente

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

TESTINGPLATFORM_DIAGNOSTIC_VERBOSITY variável de ambiente

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

TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_DIRECTORY variável de ambiente

O diretório de saída do registo de diagnóstico. Se não for especificado, o ficheiro é gerado no diretório predefinido TestResults .

TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX variável de ambiente

O prefixo do nome do ficheiro de log. O valor padrão é "log_".

TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE variável de ambiente

Força o registrador de arquivos interno 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 torna mais lenta a execução do teste.

TESTINGPLATFORM_EXITCODE_IGNORE variável de ambiente

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

Observação

As variáveis de ambiente relacionadas com o diagnóstico têm prioridade sobre os seus argumentos correspondentes --diagnostic-* na linha de comandos.

Ver também