Compartilhar via


Executar testes com MSTest

Há várias maneiras de executar testes MSTest dependendo de suas necessidades. Você pode executar testes de um IDE (por exemplo, Visual Studio, Visual Studio Code ou JetBrains Rider) ou da linha de comando ou de um serviço de CI (como GitHub Actions ou Azure DevOps).

Historicamente, o MSTest dependia do VSTest para executar testes em todos os contextos, mas a partir da versão 3.2.0, o MSTest tem seu próprio executor de teste. Este novo executor é mais leve e mais rápido que o VSTest, e é a maneira recomendada de executar testes MSTest.

VSTest vs Microsoft.Testing.Platform (MTP)

O MSTest dá suporte à execução de testes com o VSTest e o Microsoft.Testing.Platform (MTP). O suporte para MTP é alimentado pelo executor MSTest, que pode executar testes em todos os contextos (por exemplo, pipelines de CI (integração contínua), CLI, Gerenciador de Testes do Visual Studio e Gerenciador de Texto do VS Code). O executor MSTest é inserido diretamente em seus projetos de teste do MSTest e não há outras dependências de aplicativo, como vstest.console ou dotnet test, necessárias para executar seus testes. No entanto, você ainda pode executar seus testes usando dotnet test.

O executor MSTest é de software livre e se baseia na Microsoft.Testing.Platform biblioteca. Você pode encontrar Microsoft.Testing.Platform código no repositório GitHub microsoft/testfx . O executor do MSTest vem empacotado com MSTest in 3.2.0 ou mais recente.

Habilitar Microsoft.Testing.Platform em um projeto MSTest

É recomendável usar o SDK do MSTest , pois simplifica muito a configuração do projeto e a atualização do projeto e garante um alinhamento adequado das versões da plataforma (Microsoft.Testing.Platform) e suas extensões.

Quando você usa MSTest SDK, por padrão, você é optado por usar Microsoft.Testing.Platform.

<Project Sdk="MSTest.Sdk/4.1.0">

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

</Project>

Como alternativa, você pode habilitar o executor MSTest adicionando a propriedade EnableMSTestRunner e definindo OutputType para Exe no arquivo de projeto. Você também precisa garantir que está usando MSTest 3.2.0 ou uma versão mais recente. Recomendamos que você atualize para a versão mais recente do MSTest disponível.

Considere o seguinte arquivo de projeto de exemplo:

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

  <PropertyGroup>
    <!-- Enable Microsoft.Testing.Platform, this is an opt-in feature -->
    <EnableMSTestRunner>true</EnableMSTestRunner>
    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>

    <!--
      Displays error on console in addition to the log file. Note that this feature comes with a performance impact.
      For more information, visit https://learn.microsoft.com/dotnet/core/testing/microsoft-testing-platform-integration-dotnet-test#show-failure-per-test
      -->
    <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>

    <OutputType>Exe</OutputType>

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

  <ItemGroup>
    <!--
      MSTest meta package is the recommended way to reference MSTest.
      It's equivalent to referencing:
          Microsoft.NET.Test.Sdk
          MSTest.TestAdapter
          MSTest.TestFramework
          MSTest.Analyzers
      Starting with 3.8, it also includes:
          Microsoft.Testing.Extensions.TrxReport
          Microsoft.Testing.Extensions.CodeCoverage
    -->
    <PackageReference Include="MSTest" Version="4.1.0" />
  </ItemGroup>

</Project>

Dica

Para garantir que todos os projetos de teste em sua solução usem o executor MSTest, defina as propriedades EnableMSTestRunner e TestingPlatformDotnetTestSupport no arquivo Directory.Build.props em vez de em arquivos de projeto individuais.

Configurações e filtros

.runsettings

Microsoft.Testing.Platform dá suporte aos runsettings por meio da opção --settingsde linha de comando. Para obter a lista completa de entradas MSTest com suporte, consulte Configurar MSTest: Runsettings. Os comandos a seguir mostram vários exemplos de uso.

Usando dotnet run:

dotnet run --project Contoso.MyTests -- --settings config.runsettings

Usando dotnet exec:

dotnet exec Contoso.MyTests.dll --settings config.runsettings

- ou -

dotnet Contoso.MyTests.dll --settings config.runsettings

Usando o executável:

Contoso.MyTests.exe --settings config.runsettings

Filtro de testes

Você pode fornecer o filtro de testes diretamente usando a opção --filterde linha de comando. Os comandos a seguir mostram alguns exemplos.

Usando dotnet run:

dotnet run --project Contoso.MyTests -- --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"

Usando dotnet exec:

dotnet exec Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"

- ou -

dotnet Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"

Usando o executável:

Contoso.MyTests.exe --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"

Consulte também