Compartilhar via


Visão geral do Microsoft.Testing.Platform

Microsoft.Testing.Platform é uma alternativa leve e portátil para VSTest para executar testes em todos os contextos, incluindo pipelines de CI (integração contínua), CLI, Explorador de Testes do Visual Studio e Explorador de Testes do VS Code. O Microsoft.Testing.Platform é inserido diretamente em seus projetos de teste e não há dependências de outro aplicativo, como vstest.console ou dotnet test, necessários para executar seus testes.

Dica

Se você precisar de ajuda para escolher entre o VSTest e o Microsoft.Testing.Platform, comece com a visão geral das plataformas de teste.

Use este artigo quando você já decidiu usar Microsoft.Testing.Platform e deseja entender seu modelo, funcionalidades e comportamento operacional.

Microsoft.Testing.Platform é open source. Você pode encontrar Microsoft.Testing.Platform código no repositório microsoft/testfx GitHub.

Comece aqui

Use o seguinte caminho, com base no que você precisa a seguir:

Pilares Microsoft.Testing.Platform

Essa nova plataforma de teste baseia-se na experiência da equipe do .NET Developer Experience Testing e tem como objetivo enfrentar os desafios encontrados desde o lançamento do .NET Core em 2016. Embora haja um alto nível de compatibilidade entre o .NET Framework e o .NET Core/.NET, alguns recursos importantes como o sistema de plug-in e os novos possíveis fatores de forma de compilações .NET tornaram complexo evoluir ou dar suporte total ao novo recurso de tempo de execução com a arquitetura atual VSTest.

Os principais fatores que impulsionam a evolução da nova plataforma de testes são detalhados a seguir:

  • Determinismo: garantir que a execução dos mesmos testes em diferentes contextos (local, CI) produzirá o mesmo resultado. O novo runtime não depende da reflexão ou de qualquer outro recurso dinâmico de runtime do .NET para coordenar uma execução de teste.

  • Transparência de runtime: o runtime do teste não interfere no código do framework de teste, não cria contextos isolados como AppDomain ou AssemblyLoadContext e não usa reflexão ou resolvedores personalizados para assembly.

  • Registro de extensões em tempo de compilação: extensões, como estruturas de teste e extensões dentro/fora do processo, são registradas durante o tempo de compilação para garantir o determinismo e facilitar a detecção de inconsistências.

  • Zero dependências: o núcleo da plataforma é um único assembly .NET, Microsoft.Testing.Platform.dll, que não tem dependências além dos runtimes com suporte.

  • Hostable: o runtime de teste pode ser hospedado em qualquer aplicativo .NET. Embora um aplicativo de console seja comumente usado para executar testes, você pode criar um aplicativo de teste em qualquer tipo de aplicativo .NET. Isso permite que você execute testes em contextos especiais, como dispositivos ou navegadores, onde pode haver limitações.

  • Suporte todos os fatores de forma .NET: Suporte fatores de forma .NET atuais e futuros, incluindo AOT Nativo.

  • Alto desempenho: encontrar o equilíbrio certo entre recursos e pontos de extensão para evitar sobrecarregar o runtime com código não fundamental. A nova plataforma de teste foi projetada para "orquestrar" uma execução de teste, em vez de fornecer detalhes de implementação sobre como realizá-la.

  • Extensível o suficiente: a nova plataforma é construída sobre pontos de extensibilidade para garantir a personalização máxima da execução de runtime. Ele permite que você configure o host do processo de teste, observe o processo de teste e consuma informações do framework de teste dentro do processo de host de teste.

  • Implantação de módulo único: o recurso de hospedagem permite um modelo de implantação de módulo único, em que um único resultado de compilação pode ser usado para dar suporte a todos os pontos de extensibilidade, tanto fora quanto no processo, sem a necessidade de enviar diferentes módulos executáveis.

Estruturas de teste com suporte

Estruturas de destino com suporte

O Microsoft.Testing.Platform dá suporte a .NET (.NET 8 e posterior), .NET Framework (versões 4.6.2 e posterior) e direciona o NETStandard 2.0 para compatibilidade máxima com outros runtimes.

Executar e depurar testes

Para obter diretrizes detalhadas sobre como executar e fazer a depuração de projetos de teste MTP da CLI, Visual Studio, Visual Studio Code e pipelines de CI, consulte Executar e depurar testes.

Opções

Para obter a lista completa de opções de linha de comando de plataforma e extensão, consulte a referência de opções da CLI Microsoft.Testing.Platform.

Integração do MSBuild

O pacote NuGet Microsoft.Testing.Platform.MSBuild fornece várias integrações para a Microsoft.Testing.Platform com o MSBuild:

  • Suporte para dotnet test. Para obter mais informações, consulte Testando com dotnet test.
  • Suporte para ProjectCapability exigido pelos Exploradores de Testes Visual Studio e Visual Studio Code.
  • Geração automática do ponto de entrada (método Main).
  • Geração automática do arquivo de configuração.
  • Detecção automática e registro de pacotes de extensão instalados.

Quando esse pacote está ativo (o padrão para mstest, NUnit e xUnit runners), instalar um pacote NuGet de extensão é tudo o que é necessário – as extensões são registradas automaticamente sem alterações de código. Se você desabilitar o ponto de entrada gerado automaticamente definindo <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>, deverá registrar manualmente as extensões em seu método Main. Cada página de extensão documenta sua chamada de registro manual.

Observação

Essa integração funciona de maneira transitiva (um projeto que faz referência a outro projeto referenciando esse pacote se comportará como se ele referenciasse o pacote) e pode ser desabilitada por meio da propriedade IsTestingPlatformApplication MSBuild.

Consulte também