Visão geral do MSTest

MSTest, Microsoft Testing Framework, é um framework de testes totalmente suportado, open-source e multiplataforma para aplicações .NET. Permite-lhe escrever e executar testes, e oferece conjuntos de testes com integração com Visual Studio e Visual Studio Code Test Explorers, a CLI .NET e muitos pipelines de CI.

O MSTest está alojado no GitHub e funciona com todos os alvos .NET suportados.

Principais características

O MSTest oferece capacidades abrangentes de teste:

Plataformas suportadas

O MSTest suporta uma vasta gama de plataformas .NET e frameworks de destino. A tabela seguinte resume o suporte da plataforma e considerações especiais:

Platform Plataformas-alvo Suporte para threading Atributos especiais Observações
.NET .NET 8+ Paralelização total Todos os atributos Recomendado para novos projetos
Framework .NET 4.6.2+ Paralelização total Todos os atributos Suporte total a funcionalidades
UWP UAP 10, .NET 10+ com ferramentas UWP Tópico de UI UITestMethod O MSTest 4.5 e o MTP 2.5 suportam as versões clássica e moderna do UWP através do sidecar de modelo de aplicação do MSTest.Sdk
WinUI 3 .NET 8+ Tópico de UI UITestMethod O MTP suporta anfitriões empacotados, não empacotados e em AppContainer; consulte Testar aplicações UWP e WinUI 3 com o MSTest e o MTP
Automação da interface de utilizador do ambiente de trabalho do Windows .NET 8+ para Windows STA STATestClass A pré-visualização do MSTest 4.5 pode lançar aplicações Win32, Windows Forms e WPF não empacotadas e expor uma janela através de Windows Automatização da Interface de Utilizador
AOT nativo .NET 8+ Paralelização total A maioria dos atributos Conjunto limitado de funcionalidades; ver Amostra nativa AOT
Navegador WebAssembly .NET 10+ anfitrião personalizado De rosca única Limited O suporte à execução do MTP começa com o MSTest 4.4
WASI WebAssembly .NET 10+ anfitrião personalizado De rosca única Limited O suporte à execução do MTP começa com o MSTest 4.4

Considerações específicas da plataforma

Testes UWP

Os testes UWP correm no contentor da aplicação UWP e requerem o thread da interface 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 pelo MSTest 4.5 e MTP 2.5, usa o MSTest.Sdk para correr testes UWP clássicos e .NET modernos através do MTP. Um sidecar de confiança total regista e ativa o pacote, autoriza o SID exato do pacote da aplicação para comunicação MTP e copia os artefactos resultantes do armazenamento do pacote.

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

Testes do WinUI 3

Os testes do WinUI 3 também requerem acesso à thread da interface 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 suporta aplicações de teste WinUI 3 com confiança total, não empacotadas e configuradas com AppContainer. MSTest.Sdk inicia diretamente aplicações não empacotadas e utiliza o seu sidecar do modelo de aplicação para registar e ativar aplicações empacotadas.

O suporte a AppContainer requer MSTest 4.5 e MTP 2.5 ou posteriores. O VSTest não suporta o WinUI 3 não empacotado. Para detalhes de configuração, consulte Testar aplicações UWP e WinUI 3 com MSTest e MTP.

Automação da interface de utilizador do ambiente de trabalho do Windows

O MSTest.Windows.UIAutomation pacote integra a gestão do ciclo de vida do MSTest com Windows Automatização da Interface de Utilizador para aplicações Win32, Windows Forms e WPF não empacotadas. Para obter informações sobre a configuração, as limitações e as classes base ApplicationTest e WindowTest, consulte Testar aplicações de ambiente de trabalho do Windows com MSTest Automatização da Interface de Utilizador.

AOT nativo

A compilação nativa AOT é suportada com algumas limitações devido à redução das capacidades de reflexão. Usa geradores de código fonte sempre que possível e teste os seus cenários AOT com o exemplo NativeAotRunner.

Navegador e WASI WebAssembly

O MSTest 4.4 suporta anfitriões personalizados de browser .NET 10 ou de WebAssembly WASI. Para executar testes a partir de um conjunto MSTest referenciado, chame AddMSTest. No projeto anfitrião, defina EnableMSTestRunner para true e GenerateTestingPlatformEntryPoint para false. Mantenha as versões dos pacotes MSTest e MTP alinhadas.

Num runtime WebAssembly de thread única, o MSTest não pode interromper à força um teste que excedeu o tempo limite. Debugger wait não é suportado no browser nem no WASI, e o browser não suporta opções de lançamento do debugger.

O MTP pode transmitir dados TRX e comunicar artefactos de ficheiro de teste e de sessão através do sistema de ficheiros virtual do WebAssembly e do canal de artefactos do host. A publicação Azure DevOps só funciona quando o host fornece acesso HTTP suportado e a autenticação de pipeline necessária. Estas funcionalidades não concedem acesso irrestrito ao sistema de ficheiros do anfitrião ou à rede.

Para um alojamento completo do navegador, consulte o exemplo do BrowserPlayground.

Suporte de threading STA

Para cenários de interoperabilidade COM no Windows, o MSTest fornece STATestClass e STATestMethod atributos para executar testes num apartamento de um único encadeamento. Para obter detalhes sobre threading STA, incluindo suporte à continuação assíncrona com UseSTASynchronizationContext, consulte os atributos de threading.

Corredores de Teste

O MSTest suporta duas plataformas de execução de testes:

  • Microsoft.Testing.Platform (MTP): A plataforma de teste moderna e recomendada, com desempenho e extensibilidade melhorados.
  • VSTest: A plataforma de teste original e padrão para .NET.

Para novos projetos, recomendamos usar o MTP com o MSTest.Sdk.

Política de suporte MSTest

Desde a v3.0.0, o MSTest segue estritamente a versão semântica.

A equipa da MSTest suporta apenas a versão mais recente lançada e incentiva fortemente os utilizadores a atualizarem sempre para a versão mais recente para beneficiarem de melhorias e patches de segurança. Os lançamentos de pré-visualização não são suportados pela Microsoft, mas são oferecidos para testes públicos antes do lançamento final.

Histórico de versões

O MSTest sofreu uma evolução significativa ao longo das principais versões:

  • MSTest v1: O framework original de testes Visual Studio
  • MSTest v2: Primeira versão open-source com suporte multiplataforma
  • MSTest v3: Reescrita moderna com arquitetura e funcionalidades melhoradas
  • MSTest v4: Versão atual com funcionalidades melhoradas

Note

O MSTest 4.5 está em desenvolvimento em outubro de 2026. As funcionalidades marcadas como introduzidas no MSTest 4.5 requerem uma versão de pré-visualização até ao lançamento da versão 4.5.0.

Para detalhes sobre todos os lançamentos, consulte o registo de alterações do MSTest.

Se estás a fazer um upgrade a partir de uma versão mais antiga, consulta os guias de migração:

Alterações de grande impacto

A equipa do MSTest analisa cuidadosamente e minimiza alterações disruptivas. Quando são necessárias alterações em ruptura, a equipa utiliza Anúncios no GitHub e rótulos de alterações em ruptura nas questões para informar antecipadamente a comunidade, dando aos utilizadores tempo para dar feedback e manifestar preocupações antes do lançamento das alterações.

Próximos passos