Visão geral do corredor MSTest
O corredor 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 corredor MSTest é de código aberto e se baseia em uma Microsoft.Testing.Platform
biblioteca. Você pode encontrar Microsoft.Testing.Platform
código no repositório GitHub da microsoft/testfx . O corredor MSTest vem junto com MSTest in 3.2.0-preview.23623.1
ou mais recente.
Habilitar o corredor MSTest 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, além de garantir um alinhamento adequado das versões da plataforma (MSTest runner) e suas extensões.
Quando você usa MSTest SDK
o , por padrão, você opta por usar o corredor 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 MSTest runner adicionando a propriedade e a EnableMSTestRunner
configuração OutputType
em Exe
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
É aconselhá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 corredor MSTest suporta as configurações de execução através da opção --settings
de linha de comando. Para obter a lista completa de entradas MSTest suportadas, consulte Configure MSTest: Runsettings. Os comandos a seguir mostram vários exemplos de uso.
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
-or-
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 --filter
de linha de comando. Os comandos a seguir 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"
-or-
dotnet Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Usando o executável:
Contoso.MyTests.exe --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"