Compartilhar via


Use Microsoft.Testing.Platform com dotnet test

Este artigo descreve como usar dotnet test para executar testes ao usar Microsoft.Testing.Platform e as várias opções disponíveis para configurar a saída do MSBuild produzida ao executar testes por meio do Microsoft.Testing.Platform.

Este artigo mostra como usar dotnet test para executar todos os testes em uma solução (*.sln) que usa Microsoft.Testing.Platform.

dotnet test integração

O comando de dotnet test é uma maneira de executar testes de soluções, projetos ou assemblies já criados. O Microsoft.Testing.Platform se conecta a essa infraestrutura para fornecer uma maneira unificada de executar testes, especialmente ao migrar do VSTest para o Microsoft.Testing.Platform.

Integração dotnet test – modo VSTest

Microsoft.Testing.Platform fornece uma camada de compatibilidade (Ponte VSTest) para trabalhar com dotnet test perfeitamente.

Os testes podem ser executados ao se executar:

dotnet test

Essa camada executa o teste por meio do VSTest e integra-se a ele no nível do Adaptador de Estrutura de Teste do VSTest.

dotnet test - Modo Microsoft.Testing.Platform

Por padrão, dotnet test está usando o comportamento VSTest para executar testes. Você pode habilitar o suporte para Microsoft.Testing.Platform em dotnet test especificando a configuração de <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> no arquivo do projeto.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>

    <IsPackable>false</IsPackable>
    <IsTestProject>true</IsTestProject>

    <OutputType>Exe</OutputType>
    <EnableMSTestRunner>true</EnableMSTestRunner>

    <!-- Add this to your project file. -->
    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>

  </PropertyGroup>

  <!-- ... -->

</Project>

Observação

É altamente recomendável que você defina a propriedade TestingPlatformDotnetTestSupport em Directory.Build.props. Dessa forma, você não precisa adicioná-lo a todos os arquivos de projeto de teste e não corre o risco de introduzir um novo projeto que não define essa propriedade e acaba com uma solução em que alguns projetos são VSTest, enquanto outros são Microsoft.Testing.Platform, que pode não funcionar corretamente e é um cenário sem suporte.

Importante

Apesar de TestingPlatformDotnetTestSupport estar definida como true, a maioria das opções de linha de comando definidas no comando dotnet test permanecem orientadas para o VSTest e não impactam os testes que utilizam Microsoft.Testing.Platform. Para fornecer argumentos para Microsoft.Testing.Platform, você precisa usar um dos métodos descritos em sobre argumentos de linha de comando de Microsoft.Testing.Platform com o comando de teste dotnet.

A lista abaixo descreveu todas as opções de linha de comando dotnet test compatíveis com Microsoft.Testing.Platform:

  • -a|--arch <ARCHITECTURE>
  • --artifacts-path <ARTIFACTS_DIR>
  • -c|--configuration <CONFIGURATION>
  • -f|--framework <FRAMEWORK>
  • -e|--environment <NAME="VALUE">
  • --interactive
  • --no-build
  • --nologo
  • --no-restore
  • -o|--output <OUTPUT_DIRECTORY>
  • --os <OS>
  • -r|--runtime <RUNTIME_IDENTIFIER>
  • -v|--verbosity <LEVEL>

Esses argumentos têm suporte porque estão vinculados à etapa de build e são independentes da plataforma de teste usada.

Argumentos de linha de comando Microsoft.Testing.Platform com dotnet test

Você pode fornecer argumentos usados para chamar o aplicativo de teste de uma das seguintes maneiras:

  • A partir da Microsoft.Testing.Platform versão 1.4 (incluída no MSTest versão 3.6), você pode adicionar opções após o traço -- duplo na linha de comando:

    dotnet test -- --minimum-expected-tests 10
    
  • Usando a TestingPlatformCommandLineArguments propriedade do MSBuild na linha de comando:

    dotnet test -p:TestingPlatformCommandLineArguments="--minimum-expected-tests 10"
    

    Ou no arquivo de projeto:

    <PropertyGroup>
      ...
      <TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
    </PropertyGroup>
    

Opções adicionais do MSBuild

A integração do MSBuild fornece opções que podem ser especificadas no arquivo do projeto ou por meio de propriedades globais na linha de comando, como -p:TestingPlatformShowTestsFailure=true.

Estas são as opções disponíveis:

Mostrar falha por teste

Por padrão, as falhas de teste são resumidas em um arquivo .log, e uma única falha por projeto de teste é relatada ao MSBuild.

Para mostrar os erros por teste com falha, especifique -p:TestingPlatformShowTestsFailure=true na linha de comando ou adicione a <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure> propriedade ao arquivo de projeto.

Na linha de comando:

dotnet test -p:TestingPlatformShowTestsFailure=true

Ou no arquivo de projeto:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>

    <IsPackable>false</IsPackable>
    <IsTestProject>true</IsTestProject>

    <OutputType>Exe</OutputType>
    <EnableMSTestRunner>true</EnableMSTestRunner>

    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>

    <!-- Add this to your project file. -->
    <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>

  </PropertyGroup>

  <!-- ... -->

</Project>

Mostrar saída completa da plataforma

Por padrão, toda a saída de console que o executável de teste subjacente escreve é capturada e ocultada do usuário. Isso inclui a faixa, as informações de versão e as informações de teste formatadas.

Para mostrar essas informações junto com a saída do MSBuild, use <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>.

Essa opção não afeta como a estrutura de teste captura a saída do usuário escrita por Console.WriteLine ou outras maneiras semelhantes de escrever no console.

Na linha de comando:

dotnet test -p:TestingPlatformCaptureOutput=false

Ou no arquivo de projeto:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>

    <IsPackable>false</IsPackable>
    <IsTestProject>true</IsTestProject>

    <OutputType>Exe</OutputType>
    <EnableMSTestRunner>true</EnableMSTestRunner>

    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>

    <!-- Add this to your project file. -->
    <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>

  </PropertyGroup>

  <!-- ... -->

</Project>

Importante

Todos os exemplos acima adicionam propriedades como EnableMSTestRunner, TestingPlatformDotnetTestSupport e TestingPlatformCaptureOutput no arquivo csproj. No entanto, é altamente recomendável que você defina essas propriedades em Directory.Build.props. Dessa forma, você não precisa adicioná-lo a todos os arquivos de projeto de teste e não corre o risco de introduzir um novo projeto que não define essas propriedades e acaba com uma solução em que alguns projetos são VSTest, enquanto outros são Microsoft.Testing.Platform, que pode não funcionar corretamente e é um cenário sem suporte.