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.
O MSTest, Microsoft Testing Framework, é uma estrutura de teste totalmente compatível, de software livre e multiplataforma para aplicativos .NET. Ele permite que você escreva e execute testes e fornece pacotes de teste com integração com o Visual Studio e o Visual Studio Code Test Explorers, a CLI do .NET e muitos pipelines de CI.
O MSTest é hospedado no GitHub e funciona com todos os destinos do .NET com suporte.
Características principais
O MSTest fornece recursos de teste abrangentes:
-
Teste orientado por dados: execute os testes com várias entradas usando
DataRow,CombinatorialData,DynamicDatae fontes de dados externas. - Gerenciamento do ciclo de vida de teste: configuração e finalização nos níveis de montagem, classe e teste.
- Execução paralela: execute testes simultaneamente para reduzir o tempo de execução.
- Organização de teste: categorize, priorize e filtre testes com atributos de metadados.
- Analisadores de código: detecte problemas comuns e imponha as práticas recomendadas em tempo de compilação.
- Declarações: métodos abrangentes de asserção para validar resultados.
Plataformas com suporte
O MSTest dá suporte a uma ampla gama de plataformas .NET e estruturas de destino. A tabela a seguir resume o suporte à plataforma e considerações especiais:
| Platform | Frameworks de destino | Suporte ao processamento por threads | Atributos especiais | Anotações |
|---|---|---|---|---|
| .NET | .NET 8+ | Paralelização completa | Todos os atributos | Recomendado para novos projetos |
| .NET Framework | 4.6.2+ | Paralelização completa | Todos os atributos | Suporte completo ao recurso |
| UWP | UAP 10, .NET 9+ com UAP | thread da IU | UITestMethod |
Use VSTest. O UWP moderno do .NET requer <UseUwp>true</UseUwp>; consulte o exemplo UWP |
| WinUI 3 | .NET 8+ | thread da IU | UITestMethod |
Requer o SDK do Aplicativo Windows; consulte Testar aplicativos WinUI 3 com MSTest e MTP |
| AOT nativo | .NET 8+ | Paralelização completa | A maioria dos atributos | Conjunto de recursos limitado; consulte Exemplo de AOT nativo |
| WebAssembly do navegador | host personalizado do .NET 10+ | Single-Thread | Limited | O suporte à execução do MTP começa com a versão prévia do MSTest 4.4 |
| WASI WebAssembly | host personalizado do .NET 10+ | Single-Thread | Limited | O suporte à execução do MTP começa com a versão prévia do MSTest 4.4 |
Considerações específicas da plataforma
Teste UWP
Os testes UWP são executados no contêiner do aplicativo UWP e exigem o thread da interface do usuário para muitas operações:
[TestClass]
public class UwpTests
{
[UITestMethod]
public void TestUwpControl()
{
// Test runs on UI thread
var button = new Button();
Assert.IsNotNull(button);
}
}
Use o VSTest para UWP clássico e UWP de .NET moderno porque ambos são executados em um AppContainer. Para obter uma configuração moderna .NET UWP, consulte o exemplo blankUwpNet9App.
Teste do WinUI 3
Os testes do WinUI 3 também exigem acesso de thread de interface do usuário para testar componentes visuais:
[TestClass]
public class WinUITests
{
[UITestMethod]
public void TestWinUIControl()
{
// Test runs on UI thread
var window = new MainWindow();
Assert.IsNotNull(window);
}
}
Para configurar testes do WinUI 3 de confiança total não empacotados ou empacotados, consulte Testar aplicativos WinUI 3 com MSTest e MTP.
A partir do MSTest 4.4, Microsoft. Testing.Platform também dá suporte a aplicativos de teste WinUI não empacotados. O VSTest não dá suporte a esse cenário. Para obter detalhes de instalação, consulte o exemplo de WinUI não empacotado.
AOT nativo
A compilação AOT nativa é aceita com algumas limitações devido à redução dos recursos de reflexão. Use geradores de código fonte sempre que possível e teste seus cenários AOT com o exemplo NativeAotRunner.
Navegador e WASI WebAssembly
A versão prévia do MSTest 4.4 oferece suporte a hosts personalizados de navegador .NET 10 ou de WebAssembly WASI. Para executar testes de um assembly MSTest referenciado, chame AddMSTest. No projeto de host, defina EnableMSTestRunner como true e GenerateTestingPlatformEntryPoint para false. Mantenha as versões do pacote MSTest e MTP alinhadas.
Em um ambiente de execução WebAssembly de thread única, o MSTest não pode interromper à força um teste que excedeu o tempo limite. Não há suporte para a espera do depurador no navegador ou wasi e o navegador não dá suporte às opções de inicialização do depurador.
O MTP pode transmitir dados TRX e relatar artefatos de arquivos de teste e de sessão por meio do sistema de arquivos virtual do WebAssembly do host e do canal de artefatos. A publicação no Azure DevOps funciona somente quando o host fornece acesso HTTP compatível e a autenticação do pipeline necessária. Esses recursos não concedem acesso irrestrito ao sistema de arquivos de host ou à rede.
Para um host de navegador completo, consulte o exemplo BrowserPlayground.
Suporte ao threading do STA
Para cenários de interoperabilidade COM do Windows, o MSTest fornece os atributos STATestClass e STATestMethod para executar testes em um apartamento de thread única. Para obter detalhes sobre o threading STA, incluindo o suporte à continuação assíncrona com UseSTASynchronizationContext, consulte Atributos de threading.
Executores de teste
O MSTest dá suporte a duas plataformas de execução de teste:
- Microsoft.Testing.Platform (MTP): a plataforma de teste moderna e recomendada com melhor desempenho e extensibilidade.
- VSTest: a plataforma de teste original e padrão para .NET.
Para novos projetos, recomendamos usar MTP com MSTest.Sdk.
Política de suporte do MSTest
Desde v3.0.0, o MSTest segue estritamente o controle de versão semântica.
A equipe mstest só dá suporte à versão mais recente lançada e incentiva fortemente os usuários a sempre atualizar para a versão mais recente para se beneficiar de melhorias e patches de segurança. Versões prévias não têm suporte da Microsoft, mas são oferecidas para testes públicos antes da versão final.
Histórico de versões
O MSTest passou por uma evolução significativa entre as principais versões:
- MSTest v1: A estrutura de teste original do Visual Studio
- MSTest v2: Primeira versão de software livre com suporte multiplataforma
- MSTest v3: reescrita moderna com arquitetura e recursos aprimorados
- MSTest v4: Versão atual com recursos aprimorados
Note
O MSTest 4.4 está em desenvolvimento a partir de agosto de 2026. Os recursos marcados como introduzidos no MSTest 4.4 exigem uma compilação de pré-visualização até o lançamento da versão 4.4.0.
Para obter detalhes sobre todas as versões, consulte o registro de alterações do MSTest.
Se você estiver atualizando de uma versão mais antiga, confira os guias de migração:
Alterações de quebra
A equipe do MSTest revisa e minimiza cuidadosamente as alterações que causam incompatibilidade. Quando alterações interruptivas são necessárias, a equipe usa comunicados do GitHub e rótulos de alterações interruptivas sobre problemas para informar a comunidade mais cedo, dando aos usuários tempo para fornecer comentários e levantar preocupações antes que as alterações sejam lançadas.