Partilhar via


Use Microsoft.Testing.Platform com dotnet test

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

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

dotnet test integração

O comando dotnet test é uma maneira de executar testes de soluções, projetos ou assemblies já construídos. 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.

dotnet test integração - modo VSTest

Microsoft.Testing.Platform fornece uma camada de compatibilidade (VSTest Bridge) para trabalhar com dotnet test sem problemas.

Os testes podem ser executados executando:

dotnet test

Esta camada executa o teste através do VSTest e integra-se com ele no nível do VSTest Test Framework Adapter.

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 no dotnet test especificando a configuração <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> 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>

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

  </PropertyGroup>

  <!-- ... -->

</Project>

Observação

É altamente recomendável que 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 acabar 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 definido para true, a maioria das opções de linha de comando definidas no teste dotnet permanecem orientadas para VSTest e não afetam os testes baseados em Microsoft.Testing.Platform. Para fornecer argumentos para Microsoft.Testing.Platform, precisa usar um dos métodos descritos em argumentos da linha de comando do Microsoft.Testing.Platform com os argumentos do comando dotnet test.

A lista abaixo descreve todas as dotnet test opções de linha de comando suportadas pelo 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 são suportados porque estão vinculados à etapa de compilação e são independentes da plataforma de teste usada.

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

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

  • A partir do Microsoft.Testing.Platform versão 1.4 (incluído 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 propriedade TestingPlatformCommandLineArguments MSBuild na linha de comando:

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

    Ou no arquivo do 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 de 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 erros por teste com falha, especifique -p:TestingPlatformShowTestsFailure=true na linha de comando ou adicione a propriedade <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure> ao arquivo de projeto.

Na linha de comando:

dotnet test -p:TestingPlatformShowTestsFailure=true

Ou 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>

    <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 do console que o executável de teste subjacente grava é capturada e oculta do usuário. Isso inclui o banner, informações de versão e informações de teste formatadas.

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

Esta opção não afeta a forma como o framework de teste captura a saída do utilizador escrita por Console.WriteLine ou outras maneiras semelhantes de escrever para o console.

Na linha de comando:

dotnet test -p:TestingPlatformCaptureOutput=false

Ou 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>

    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>

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

  </PropertyGroup>

  <!-- ... -->

</Project>

Importante

Todos os exemplos acima adicionam propriedades como EnableMSTestRunner, TestingPlatformDotnetTestSupporte 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.