Visão geral do MSTest

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:

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 10+ com ferramentas UWP thread da IU UITestMethod O MSTest 4.5 e o MTP 2.5 dão suporte à UWP clássica e moderna por meio do sidecar de modelo de aplicativo do MSTest.Sdk
WinUI 3 .NET 8+ thread da IU UITestMethod O MTP dá suporte a hosts empacotados, não empacotados e AppContainer; consulte Testar aplicativos UWP e WinUI 3 com MSTest e MTP
Automação da interface do usuário da área de trabalho do Windows Destino do Windows para .NET 8 ou superior STA STATestClass A versão prévia do MSTest 4.5 pode iniciar aplicativos Win32, Windows Forms e WPF não empacotados e expor uma janela por meio de Windows Automação da Interface do Usuário
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 o MSTest 4.4
WASI WebAssembly host personalizado do .NET 10+ Single-Thread Limited O suporte à execução do MTP começa com o 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);
    }
}

Começando com MSTest 4.5 e MTP 2.5, use MSTest.Sdk para executar testes UWP clássicos e modernos .NET UWP por meio do MTP. Um sidecar com confiança total registra e ativa o pacote, autoriza o SID exato do pacote do aplicativo para a comunicação MTP e copia os artefatos de resultado do armazenamento do pacote.

Uma UWP moderna requer .NET 10, UseUwp, e a cadeia de ferramentas de compilação do Visual Studio UWP. A UWP clássica mantém sua estrutura de projeto existente uap10.0. Para obter configurações completas, consulte o exemplo UWP moderno e o exemplo clássico da UWP.

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);
    }
}

O MTP oferece suporte a aplicativos de teste WinUI 3 empacotados com confiança total, não empacotados e configurados com AppContainer. O MSTest.Sdk inicia diretamente aplicativos não empacotados e usa seu respectivo sidecar de modelo de aplicativo para registrar e ativar aplicativos empacotados.

O suporte ao AppContainer requer MSTest 4.5 e MTP 2.5 ou posterior. O VSTest não dá suporte ao WinUI 3 não empacotado. Para obter detalhes de instalação, consulte Testar aplicativos UWP e WinUI 3 com MSTest e MTP.

Automação da interface do usuário da área de trabalho do Windows

O MSTest.Windows.UIAutomation pacote integra o gerenciamento de ciclo de vida do MSTest com Windows Automação da Interface do Usuário para aplicativos Win32, Windows Forms e WPF não empacotados. Para obter informações sobre configuração, limitações e as classes base WindowTest e ApplicationTest, consulte Testar aplicativos da área de trabalho do Windows com o MSTest Automação da Interface do Usuário.

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

O MSTest 4.4 oferece suporte a hosts personalizados de navegador do .NET 10 ou do WASI WebAssembly. 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.5 está em desenvolvimento a partir de outubro de 2026. Os recursos marcados como introduzidos no MSTest 4.5 exigem uma versão prévia até que a versão 4.5.0 seja lançada.

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.

Próximas etapas