Partilhar via


Visão geral do Microsoft.Testing.Platform

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

Dica

Se precisar de ajuda para escolher entre VSTest e Microsoft.Testing.Platform, comece pela visão geral das plataformas de Teste.

Use este artigo quando já decidiu usar o Microsoft.Testing.Platform e quiser compreender o seu modelo, capacidades e comportamento operacional.

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

Comece aqui

Use o seguinte caminho, de acordo com o que precisar a seguir:

Pilares da Plataforma Microsoft.Testing

Esta nova plataforma de testes baseia-se na experiência da equipa de Testagem de Experiência para Desenvolvedores do .NET e visa responder aos desafios enfrentados desde o lançamento do .NET Core em 2016. Embora exista um elevado nível de compatibilidade entre o .NET Framework e o .NET Core/.NET, algumas funcionalidades-chave, como o sistema de plugins e os novos possíveis formatos de compilações .NET, tornaram complexo evoluir ou suportar totalmente a nova funcionalidade de runtime com a atual arquitetura VSTest plataforma.

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

  • Determinismo: Garantir que executar os mesmos testes em contextos diferentes (local, CI) produzirá o mesmo resultado. O novo tempo de execução não se baseia na reflexão nem em qualquer outro recurso dinâmico do tempo de execução .NET para coordenar uma execução de teste.

  • Transparência do tempo de execução: O tempo de execução do teste não interfere com o código da estrutura de teste, não cria contextos isolados como AppDomain ou AssemblyLoadContexte não usa resolvedores de reflexão ou assembly personalizados.

  • Registro em tempo de compilação de extensões: Extensões, como estruturas de teste e extensões in/out-of-process, são registradas durante o tempo de compilação para garantir determinismo e facilitar a deteção de inconsistências.

  • Zero: O núcleo da plataforma é um único assembly .NET, , que não tem dependências além dos ambientes de execução suportados.

  • Hostable: O tempo de execução do teste pode ser alojado em qualquer aplicação .NET. Embora uma aplicação de consola seja comumente usada para executar testes, pode criar uma aplicação de teste em qualquer tipo de aplicação .NET. Isso permite que você execute testes em contextos especiais, como dispositivos ou navegadores, onde pode haver limitações.

  • Suporta todos os fatores de forma .NET: Suporta os fatores de forma .NET atuais e futuros, incluindo o AOT nativo.

  • Performant: Encontrar o equilíbrio certo entre recursos e pontos de extensão para evitar o inchaço do tempo de execução com código não fundamental. A nova plataforma de testes foi concebida para "orquestrar" uma execução de testes, em vez de fornecer detalhes de implementação sobre como fazê-lo.

  • Extensível o suficiente: A nova plataforma é construída em pontos de extensão para permitir a máxima personalização durante a execução. Ele permite que você configure o host do processo de teste, observe o processo de teste e consuma informações da estrutura de teste dentro do processo do host de teste.

  • implantação de módulo único: O recurso de hostability permite um modelo de implantação de módulo único, onde um único resultado de compilação pode ser usado para suportar todos os pontos de extensibilidade, tanto fora de processo como em processo, sem a necessidade de entregar diferentes módulos executáveis.

Estruturas de teste suportadas

  • MSTest. No MSTest, o suporte de Microsoft.Testing.Platform é feito através de corredor MSTest.
  • NUnit. Em NUnit, o Microsoft.Testing.Platform é suportado através do executor NUnit .
  • xUnit.net. Para mais informações, consulte Microsoft Testing Platform (xUnit.net v3) e Microsoft Testing Platform (xUnit.net v2) da documentação xUnit.net.
  • TUnit: inteiramente construído sobre o Microsoft.Testing.Platform, para obter mais informações, consulte a documentação do TUnit em .

Estruturas de destino suportadas

O Microsoft.Testing.Platform suporta .NET (.NET 8 e posteriores), .NET Framework (versões 4.6.2 e posteriores) e visa o NETStandard 2.0 para máxima compatibilidade com outros tempos de execução.

Executar e depurar testes

Para orientações detalhadas sobre a execução e depuração de projetos de teste MTP a partir de CLI, Visual Studio, Visual Studio Code e CI pipelines, veja Run and debug tests.

Opções

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

Integração com MSBuild

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

  • Suporte para dotnet test. Para obter mais informações, consulte Testando com o teste dotnet.
  • O suporte para ProjectCapability exigido pelo Visual Studio e Visual Studio Code Test Explorers.
  • Geração automática do ponto de entrada (métodoMain).
  • Geração automática do arquivo de configuração.
  • Deteção automática e registo dos pacotes de extensão instalados.

Quando este pacote está ativo (o padrão para os runners MSTest, NUnit e xUnit), basta instalar um pacote NuGet de extensões — as extensões são registadas automaticamente sem alterações de código. Se desativar o ponto de entrada gerado automaticamente ao definir <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>, deve registar manualmente as extensões no método Main. Cada página de extensão documenta sua chamada de registo manual.

Observação

Esta integração funciona de forma transitiva (um project que faz referência a outro project que referencia este pacote comportar-se-á como se referenciasse o pacote) e pode ser desativado através da propriedade IsTestingPlatformApplication MSBuild.

Ver também