Compartilhar via


Usar Microsoft.Testing.Platform no modo VSTest de dotnet test

Este artigo explica a integração do dotnet test para Microsoft.Testing.Platform, que é fornecido pelo Microsoft.Testing.Platform.MSBuild quando executado no modo VSTest de dotnet test.

Antes de se aprofundar neste artigo, é recomendável ler primeiro Testando com dotnet test, que explica os dois modos dotnet test (modos VSTest e MTP).

Por padrão, dotnet test usa o VSTest para executar testes. Para habilitar o suporte de Microsoft.Testing.Platform em dotnet test, você tem duas opções:

  1. Use dotnet test no modo VSTest e especifique <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> a propriedade MSBuild no arquivo de projeto.
  2. Use dotnet test no modo MTP para um suporte mais nativo do MTP em dotnet test, que é suportado apenas a partir do SDK do .NET 10.

Ambas as opções são explicadas detalhadamente no artigo Testando com dotnet test.

Importante

O restante deste artigo é específico para o modo VSTest de dotnet test.

Cuidado

A partir do .NET 10 SDK, recomenda-se evitar o uso do modo VSTest de dotnet test ao executar com o Microsoft.Testing.Platform.

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>

    <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 o banner, 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>

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