Partilhar 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), 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 o seu próprio executor de testes. Este novo corredor é mais leve e mais rápido do que o VSTest, e é a maneira recomendada de executar testes MSTest.

VSTest vs Microsoft.Testing.Platform (MTP)

O MSTest suporta a execução de testes tanto com o VSTest como com o Microsoft.Testing.Platform (MTP). O suporte para MTP é alimentado pelo runner MSTest, que pode executar testes em todos os contextos (por exemplo, pipelines de integração contínua (CI), CLI, Visual Studio Test Explorer e VS Code Text Explorer). O runner MSTest está integrado diretamente nos seus projetos de teste MSTest, e não são necessárias outras dependências de aplicação, como vstest.console ou dotnet test, para executar os seus testes. No entanto, ainda pode executar os seus testes usando dotnet test.

O runner MSTest é open source e baseia-se na Microsoft.Testing.Platform biblioteca. Podes encontrar Microsoft.Testing.Platform código no repositório GitHub da microsoft/testfx . O MSTest Runner vem incluído com MSTest in 3.2.0 ou mais recente.

Ativar o Microsoft.Testing.Platform num projeto MSTest

Recomenda-se usar o MSTest SDK , pois simplifica muito a configuração do projeto e a atualização do projeto, garantindo um alinhamento adequado entre as versões da plataforma (Microsoft.Testing.Platform) e as suas extensões.

Quando usas MSTest SDK, por defeito, estás autorizado a usar o Microsoft.Testing.Platform.

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

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

</Project>

Alternativamente, podes ativar o MSTest runner adicionando à EnableMSTestRunner propriedade e definindo OutputType com Exe no ficheiro do teu projeto. Também precisa de garantir que está a usar MSTest 3.2.0 ou uma versão mais recente. Recomendamos vivamente que atualize para a versão mais recente do MSTest disponível.

Considere o seguinte exemplo de ficheiro de projeto:

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

Sugestão

Para garantir que todos os projetos de teste na sua solução usem o runner MSTest, defina as EnableMSTestRunner propriedades e TestingPlatformDotnetTestSupport no ficheiro Directory.Build.props em vez dos ficheiros individuais do projeto.

Configurações e filtros

.runsettings

O Microsoft.Testing.Platform suporta as definições de execução através da opção --settingsde linha de comandos. Para a lista completa de entradas MSTest suportadas, veja Configurar MSTest: Runsettings. Os comandos seguintes mostram vários exemplos de utilização.

Utilização de dotnet run:

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

Utilização de 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

Pode fornecer os testes filtro de forma fluida usando a opção de linha de comando --filter. Os comandos seguintes mostram alguns exemplos.

Utilização de dotnet run:

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

Utilização de 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