Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Dica
Antes de escolher uma configuração de executor, consulte a visão geral das plataformas de teste.
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 se baseava em 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 MTP
O MSTest dá suporte à execução de testes com o VSTest e o Microsoft.Testing.Platform (MTP). O suporte para MTP é fornecido pelo executor MSTest, que pode realizar testes em todos os contextos (por exemplo, pipelines de integração contínua (CI), CLI, Explorador de Testes do Visual Studio e Explorador 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 é código aberto e se baseia na biblioteca MTP. Você pode encontrar Microsoft.Testing.Platform código no repositório microsoft/testfx GitHub. O executor MSTest vem empacotado com o MSTest in 3.2.0 ou mais recente.
Com o SDK do .NET 10 e versões posteriores, selecione o modo MTP específico de dotnet test em global.json. A partir do .NET 11 Preview 6, você pode sobrescrever essa seleção para o processo atual com a variável de ambiente DOTNET_TEST_RUNNER. Para ver as entradas suportadas, os requisitos de versão do SDK e as opções específicas do MTP, consulte dotnet test com MTP.
Descoberta e execução programática de testes
Para uma interface de usuário de teste personalizada, um serviço de testes de integração ou um gerador de relatórios, escolha a interface que corresponde à sua plataforma de teste:
| Requirement | Interface | Details |
|---|---|---|
| Descubra e execute testes MTP a partir de código .NET, com metadados e resultados dinâmicos. | Cliente MTP em modo servidor | A partir do MTP 2.4, Microsoft.Testing.Platform.ServerMode.Client.Sources fornece métodos tipados de descoberta e execução. O pacote injeta tipos C# internos; outros idiomas .NET podem chamar um wrapper C#. |
| Descubra testes MTP por meio de um processo de linha de comando e consuma metadados estruturados. | --list-tests json |
Disponível no MTP 2.3 ou posterior. Leia o documento JSON e execute os testes selecionados com --filter-uid. O formato de texto não é uma API legível por computador. |
| Mantenha uma integração de descoberta e execução do VSTest existente. | Microsoft.TestPlatform.TranslationLayer |
Use VsTestConsoleWrapper com vstest.console e um adaptador VSTest compatível. O wrapper fala o protocolo VSTest, não o protocolo MTP nativo. |
| Consumir metadados de teste ou produzir relatórios personalizados dentro do processo de teste. | Extensões MTP | Implemente um IDataConsumer para consumir as mensagens que um framework de teste publica. Esse ponto de extensão não é uma API externa de cliente de teste. |
O MTP dá suporte à descoberta e à execução. Você não precisa analisar a saída do terminal ou criar um wrapper Process.Start para usar seu cliente tipado em modo servidor. Para obter um exemplo completo de C# e um chamador Visual Basic, consulte Descobrir e executar testes de .NET.
A descoberta pode incluir categorias MSTest e metadados personalizados TestProperty . Os campos disponíveis dependem do framework e do transporte; nenhuma das APIs serializa todas as propriedades arbitrárias na memória. Consulte Consumir atualizações e metadados.
Para uma integração existente VsTestConsoleWrapper , mantenha uma configuração e um adaptador de projeto compatíveis com VSTest até migrar o cliente. A compatibilidade do VSTest de um framework não torna a camada de tradução do VSTest um cliente para cada aplicativo de teste MTP. Para o escopo da camada de compatibilidade, consulte VSTest Bridge.
Habilitar MTP em um projeto MSTest
Use o SDK do MSTest para simplificar muito a configuração do projeto, o gerenciamento de versão e o alinhamento do MTP e suas extensões.
MSTest.Sdk substitui Microsoft.NET.Sdk como SDK do projeto, e o MTP é habilitado por padrão:
<Project Sdk="MSTest.Sdk/4.1.0">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
Note
MSTest.Sdk funciona somente quando seu projeto pode usar Microsoft.NET.Sdk como seu SDK base. Se o projeto exigir um SDK diferente, não substitua o valor <Project Sdk="..."> por MSTest.Sdk.
Por exemplo, alguns projetos de teste de integração ASP.NET Core usam Microsoft.NET.Sdk.Web.
MSTest.Sdkderiva deMicrosoft.NET.Sdk, portanto, ele não importa os destinos do SDK ASP.NET Core que Microsoft.NET.Sdk.Web fornece.
Você também pode configurar o MSTest manualmente em vez de usar MSTest.Sdk. A configuração manual é necessária quando seu projeto precisa de um SDK de nível superior diferente (por exemplo, Microsoft.NET.Sdk.Web), mas você também pode escolhê-lo com o padrão Microsoft.NET.Sdk. Adicione a EnableMSTestRunner propriedade e defina OutputTypeExe no arquivo de projeto. Em seguida, adicione as referências do MSTest que seu projeto necessita. Verifique se você está usando o MSTest 3.2.0 ou mais recente e atualize para a versão mais recente do MSTest disponível.
Considere o seguinte exemplo de arquivo 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/unit-testing-with-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 arquivos project individuais.
Configurações e filtros
.runsettings
O MTP 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
- Executar testes mstest no Azure Pipelines
-
Testando com
dotnet test -
dotnet testcom MTP -
dotnet testcom VSTest - Referência de opções da CLI MTP
- Modo de servidor MTP
- Testar aplicativos UWP e WinUI 3 com MSTest e MTP
- Testar aplicativos da área de trabalho Windows com o MSTest Automação da Interface do Usuário
- Testes de filtro
- Ordenar testes unitários