Visão geral do executor MSTest
O executor MSTest é uma alternativa leve e portátil ao VSTest para 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 executor MSTest é incorporado diretamente em seus projetos de teste MSTest e não há outras dependências de aplicativo, como vstest.console
ou dotnet test
, necessárias para executar seus testes.
O executor MSTest é de código aberto e baseia-se em uma biblioteca Microsoft.Testing.Platform
. Você pode encontrar o código Microsoft.Testing.Platform
no repositório do Git microsoft/testfx. O executor MSTest vem empacotado com o MSTest in 3.2.0-preview.23623.1
ou mais recente.
Habilitar o executor do MSTest em um projeto do MSTest
É recomendável usar o SDK do MSTest, pois ele simplifica muito a configuração e a atualização do projeto, além de garantir um alinhamento adequado das versões da plataforma (executor do MSTest) e suas extensões.
Ao usar MSTest SDK
, por padrão você optou por usar o executor MSTest.
<Project Sdk="MSTest.Sdk/3.3.1">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
Como alternativa, você pode habilitar o executor MSTest adicionando a propriedade EnableMSTestRunner
e a configuração OutputType
a Exe
no seu arquivo de projeto. Você também precisa garantir que está usando MSTest 3.2.0-preview.23623.1
ou mais recente.
Considere o seguinte arquivo de projeto de exemplo:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- Enable the MSTest runner, this is an opt-in feature -->
<EnableMSTestRunner>true</EnableMSTestRunner>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
</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
-->
<PackageReference Include="MSTest" Version="3.2.0" />
<!--
Coverlet collector isn't compatible with MSTest runner, you can
either switch to Microsoft CodeCoverage (as shown below),
or switch to be using coverlet global tool
https://github.com/coverlet-coverage/coverlet#net-global-tool-guide-suffers-from-possible-known-issue
-->
<PackageReference Include="Microsoft.Testing.Extensions.CodeCoverage"
Version="17.10.1" />
</ItemGroup>
</Project>
Dica
É recomendável definir a propriedade EnableMSTestRunner
em arquivo Directory.Build.props em vez de arquivo csproj para garantir que todos os projetos de teste em sua solução estejam usando o executor MSTest.
Configurações e filtros
.runsettings
O executor MSTest suporta configurações de execução por meio da opção de linha de comando --settings
. Para obter a lista completa de entradas do MSTest com suporte, consulte Configurar o MSTest: configurações de execução. 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 perfeitamente usando a opção de linha de comando --filter
. 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"