Partilhar via


Visão geral das plataformas de teste para .NET

No .NET, um framework de testes e uma plataforma de testes são componentes diferentes que trabalham em conjunto para descobrir e executar testes.

  • O framework de teste define o modelo de teste contra o qual escreves, 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 partilhados.

Pode escolher entre duas plataformas de teste:

  • VSTest
  • Microsoft.Testing.Platform (MTP)

Sugestão

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

Como escolher a sua plataforma

Use os seguintes cenários para escolher rapidamente.

Caso de utilização Escolher Porquê
Precisas de AOT nativo ou de cenários de execução de testes com redução. Microsoft.Testing.Platform O MTP suporta estes cenários modernos de implementação, enquanto o VSTest não.
Está a desenvolver projetos de teste WinUI ou UWP em pacotes. VSTest Estes tipos de projetos não são atualmente suportados pelo MTP.
É preciso misturar testes .NET com adaptadores de teste não .NET (por exemplo, adaptadores JavaScript ou C++). VSTest O VSTest suporta cenários adaptadores de línguas mistas, enquanto o MTP é específico para .NET.
Pretende que os projetos de teste se comportem como executáveis normais (dotnet run, execução direta do executável, dotnet watch, e fluxos de inicialização do projeto F5). Microsoft.Testing.Platform O MTP é executável primeiro, por isso as aplicações de teste correm como aplicações .NET padrão em fluxos de trabalho locais e CI.
Confia-se em integrações estabelecidas ao longo das ferramentas existentes. VSTest O VSTest tem o maior histórico de compatibilidade entre produtos, tarefas e pipelines existentes. O suporte ao MTP está a crescer no ecossistema, mas algumas integrações podem ficar atrás do VSTest.
Preferes padrões rigorosos e comportamentos explícitos. Microsoft.Testing.Platform MTP favorece a execução determinística com um modelo de extensão leve, opcional, e registo em tempo de compilação. Por exemplo, pode falhar quando não são executados testes, reduzir a variabilidade dependente do ambiente e permitir desativar extensões individuais por ambiente.
Preferes padrões mais suaves, largos e compatíveis com versões anteriores. VSTest Ambas as plataformas preocupam-se com a compatibilidade retroativa. O VSTest prioriza padrões orientados para compatibilidade para cadeias de ferramentas diversas e existentes, enquanto o MTP oferece compatibilidade retroativa dentro do seu próprio modelo de extensão.
Estás bloqueado por um problema ou comportamento específico do VSTest no teu fluxo de trabalho atual. Microsoft.Testing.Platform Em muitos cenários, o mesmo fluxo de trabalho não é afetado quando passado para MTP devido a diferenças na arquitetura do modelo de execução e da extensão.

Se o teu caso de uso específico não estiver listado, ambas as plataformas são escolhas válidas.

Integração e suporte a ferramentas

Área de integração VSTest Microsoft.Testing.Platform
Integração IDE Integração madura entre Visual Studio e outras ferramentas que dependem do protocolo VSTest e adaptadores. Suportado em cenários Visual Studio e Visual Studio Code, com trabalho contínuo de integração em partes do ecossistema.
CI e ferramentas externas Amplo suporte para ferramentas e tarefas estabelecidas, tanto da Microsoft quanto de outros fornecedores. No Azure DevOps, podes usar a tarefa VSTest (VSTest@3, vstest.console) ou a tarefa .NET (DotNetCoreCLI@2, dotnet test). Funciona em fluxos de trabalho CI e .NET modernos, mas algumas integrações de terceiros ainda podem ficar atrás do VSTest. No Azure DevOps, usa a tarefa .NET (DotNetCoreCLI@2, dotnet test).
dotnet test Comportamento Modo VSTest padrão. Aplicam-se os argumentos e os comportamentos do VSTest. O modo MTP nativo está disponível no SDK .NET 10 e posteriores.

Para detalhes completos sobre dotnet test modos e argumentos, veja Testes com dotnet test.

Comece pelo seu framework de teste

Se escolheres VSTest

Se escolher Microsoft.Testing.Platform

Próximos passos