Compartilhar via


Visão geral das plataformas de teste para .NET

Em .NET, uma estrutura de teste e uma plataforma de teste são componentes diferentes que trabalham juntos para descobrir e executar testes.

  • A estrutura de teste define o modelo de teste no qual você escreve, como MSTest, NUnit, xUnit.net ou TUnit.
  • A plataforma de teste executa testes, integra-se com IDEs e CLI e fornece pontos de extensão compartilhados.

Você pode escolher entre duas plataformas de teste:

  • VSTest
  • Microsoft.Testing.Platform (MTP)

Dica

Para a configuração mais simples, escolha uma plataforma para o repositório e configure projetos de teste, CI e ferramentas de forma consistente para essa plataforma. Não misture projetos de teste de .NET baseados em VSTest e microsoft.Testing.Platform na mesma solução ou execute a configuração porque esse cenário não tem suporte. Se você também executar testes não .NET que dependem do VSTest (por exemplo, testes C++ ou JavaScript), execute esses testes em configurações separadas de seus testes de .NET baseados em MTP.

Como escolher sua plataforma

Use os cenários a seguir para escolher rapidamente.

Caso de uso Escolher Por que
Você precisa de cenários de execução de teste de AOT nativo ou de redução. Microsoft.Testing.Platform O MTP dá suporte a esses cenários de implantação modernos, enquanto o VSTest não.
Você está criando projetos empacotados de teste do WinUI ou UWP. VSTest Atualmente, esses tipos de projeto não têm suporte do MTP.
Você precisa misturar testes .NET e adaptadores de teste não .NET (por exemplo, adaptadores JavaScript ou C++). VSTest O VSTest dá suporte a cenários de adaptador de linguagem mista, enquanto o MTP é .NET específico.
Você quer que os projetos de teste funcionem como executáveis regulares (dotnet run, execução dotnet watch executável direta e fluxos F5 do projeto de inicialização). Microsoft.Testing.Platform O MTP é executável primeiro, portanto, os aplicativos de teste são executados como aplicativos .NET padrão em fluxos de trabalho locais e de CI.
Você depende de integrações estabelecidas há muito tempo em ferramentas existentes. VSTest O VSTest tem o registro de compatibilidade mais longo em produtos, tarefas e pipelines existentes. O suporte a MTP está crescendo no ecossistema, mas algumas integrações podem ficar atrás do VSTest.
Você prefere padrões estritos e comportamento explícito. Microsoft.Testing.Platform O MTP favorece a execução determinística com um modelo de extensão leve e optativo e registro em tempo de compilação. Por exemplo, ele pode falhar quando nenhum teste é executado, reduzir a variabilidade dependente do ambiente e permitir que você desabilite extensões individuais por ambiente.
Você prefere padrões padrão mais suaves e amplos que sejam compatíveis com versões anteriores. VSTest Ambas as plataformas se preocupam com a compatibilidade com versões anteriores. O VSTest prioriza os padrões orientados à compatibilidade para cadeias de ferramentas diversas e existentes, enquanto o MTP fornece compatibilidade com versões anteriores em seu próprio modelo de extensão.
Você está bloqueado por um problema ou comportamento específico do VSTest no fluxo de trabalho atual. Microsoft.Testing.Platform Em muitos cenários, o mesmo fluxo de trabalho não é afetado quando movido para MTP devido a diferenças no modelo de runtime e na arquitetura de extensão.

Se o caso de uso específico não estiver listado, ambas as plataformas serão opções válidas.

Integração e suporte a ferramentas

Área de integração VSTest Microsoft.Testing.Platform
Integração de IDE Integração madura entre Visual Studio e outras ferramentas que dependem do protocolo VSTest e adaptadores. O suporte está presente em cenários de Visual Studio e Visual Studio Code, com a integração contínua em andamento em partes do ecossistema.
CI e ferramentas externas Suporte abrangente em ferramentas e tarefas Microsoft e não-Microsoft estabelecidas. Em Azure DevOps, você pode usar a tarefa VSTest (VSTest@3, vstest.console) ou a tarefa .NET (DotNetCoreCLI@2, dotnet test). Funciona em CI e fluxos de trabalho de .NET modernos, mas algumas integrações de terceiros ainda podem ficar atrás do VSTest. Em Azure DevOps, use a tarefa .NET (DotNetCoreCLI@2, dotnet test).
dotnet test Comportamento Modo VSTest padrão. Os argumentos e o comportamento do VSTest se aplicam. O modo MTP nativo está disponível em .NET 10 SDK e posteriores.

Para obter detalhes completos sobre dotnet test modos e argumentos, consulte Testando com dotnet test.

Comece com a estrutura de teste

Se você escolher VSTest

Se você escolher Microsoft.Testing.Platform

Próximas etapas