Partilhar via


Comparação entre Microsoft.Testing.Platform e VSTest

Microsoft.Testing.Platform é uma alternativa leve e portátil ao VSTest para executar testes em linha de comando, em pipelines de integração contínua (CI), no Gerenciador de Testes do Visual Studio e no Visual Studio Code. Neste artigo, você aprenderá as principais diferenças entre o corredor MSTest e o VSTest.

Diferenças na execução do teste

Os testes são executados de maneiras diferentes, dependendo do corredor.

Executar testes VSTest

O VSTest é fornecido com o Visual Studio, o SDK do .NET e como uma ferramenta autônoma no pacote Microsoft.TestPlatform NuGet. VSTest usa um executável runner para executar testes, chamado vstest.console.exe, que pode ser usado diretamente ou através dotnet test.

Executar testes Microsoft.Testing.Platform

Microsoft.Testing.Platform é incorporado diretamente em seu projeto de teste e não envia nenhum executável extra. Quando você executa o executável do projeto, os testes são executados. Para obter mais informações sobre como executar testes Microsoft.Testing.Platform, consulte Visão geral de Microsoft.Testing.Platform: Executar e depurar testes.

Namespaces e pacotes NuGet

Para se familiarizar com Microsoft.Testing.Platform e VSTest, é útil entender os namespaces e pacotes NuGet usados por cada um.

Namespaces VSTest

VSTest é uma coleção de ferramentas de teste que também são conhecidas como a plataforma de teste . O código-fonte VSTest é de código aberto e está disponível no repositório microsoft/vstest GitHub. O código usa o namespace Microsoft.TestPlatform.*.

O VSTest é extensível e tipos comuns são colocados em pacote Microsoft.TestPlatform.ObjectModel NuGet.

Namespaces Microsoft.Testing.Platform

A Microsoft.Testing.Platform baseia-se no pacote NuGet Microsoft.Testing.Platform e noutras bibliotecas no espaço de nomes Microsoft.Testing.*. Como o VSTest, o Microsoft.Testing.Platform é de código aberto e tem um repositório microsoft/testfx GitHub.

Protocolo de comunicação

Observação

O Visual Studio Test Explorer suporta o protocolo Microsoft.Testing.Platform desde 17.12 em diante. Se você executar/depurar seus testes usando versões anteriores do Visual Studio, o Test Explorer usará vstest.console.exe e o protocolo antigo para executar esses testes.

Microsoft.Testing.Platform usa um protocolo baseado em JSON-RPC para se comunicar entre o Visual Studio e o processo do executor de teste. O protocolo está documentado no repositório MSTest GitHub.

O VSTest também usa um protocolo de comunicação baseado em JSON, mas não é baseado em JSON-RPC.

Desativando o novo protocolo

Para desabilitar o uso do novo protocolo no Test Explorer, você pode editar seu projeto para adicionar a seguinte propriedade: <DisableTestingPlatformServerCapability>true</DisableTestingPlatformServerCapability>.

Você também pode ir para as opções de recursos de visualização no Visual Studio e desmarcar a opção "Usar o modo de servidor de plataforma de teste".

Executáveis

O VSTest distribui vários executáveis, incluindo vstest.console.exe, testhost.exee datacollector.exe. No entanto, o MSTest é incorporado diretamente em seu projeto de teste e não envia nenhum outro executável. O executável para o qual seu projeto de teste compila é usado para hospedar todas as ferramentas de teste e executar todas as tarefas necessárias para executar testes.

Migrando do VSTest

Além das etapas específicas para sua estrutura de teste, você precisa atualizar sua infraestrutura de teste para acomodar a Microsoft.Testing.Platform.

dotnet test

As opções de linha de comando do dotnet test são divididas em 2 categorias: construir argumentos relacionados e testar os relacionados.

Os argumentos relacionados à compilação são passados para o comando dotnet build e, como tal, não precisam ser atualizados para a nova plataforma. Os argumentos relacionados à construção estão listados abaixo:

  • -a|--arch <ARCHITECTURE>
  • --artifacts-path <ARTIFACTS_DIR>
  • -c|--configuration <CONFIGURATION>
  • -f|--framework <FRAMEWORK>
  • -e|--environment <NAME="VALUE">
  • --interactive
  • --no-build
  • --nologo
  • --no-restore
  • -o|--output <OUTPUT_DIRECTORY>
  • --os <OS>
  • -r|--runtime <RUNTIME_IDENTIFIER>
  • -v|--verbosity <LEVEL>

Os argumentos relacionados ao teste são específicos do VSTest e, portanto, precisam ser transformados para corresponder à nova plataforma. A tabela a seguir mostra o mapeamento entre os argumentos VSTest e a nova plataforma:

Argumento VSTest Novo argumento de plataforma
--test-adapter-path <ADAPTER_PATH> Não suportado
--blame Não suportado
--blame-crash --crashdump requer a extensão de registo de falhas
--blame-crash-dump-type <DUMP_TYPE> --crashdump-type requer a extensão de despejo de memória
--blame-crash-collect-always Não suportado
--blame-hang --hangdump requer extensão Hang dump
--blame-hang-dump-type <DUMP_TYPE> --hangdump-type requer extensão Hang dump
--blame-hang-timeout <TIMESPAN> --hangdump-timeout requer extensão Hang dump
--collect <DATA_COLLECTOR_NAME> Depende do coletor de dados
-d\|--diag <LOG_FILE> --diagnostic
--filter <EXPRESSION> Depende da estrutura de teste selecionada
-l\|--logger <LOGGER> Depende do registador
--results-directory <RESULTS_DIR> --results-directory <RESULTS_DIR>
-s\|--settings <SETTINGS_FILE> Depende da estrutura de teste selecionada
-t\|--list-tests --list-tests
-- <RunSettings arguments> Não suportado

Importante

Antes de especificar quaisquer argumentos Microsoft.Testing.Platform, é necessário adicionar -- para separar os argumentos dotnet test dos novos argumentos da plataforma. Por exemplo, dotnet test --no-build -- --list-tests.

vstest.console.exe

Se você estiver usando vstest.console.exe diretamente, recomendamos substituí-lo pelo comando dotnet test.

Explorador de Testes

Ao usar o Visual Studio ou Visual Studio Code Test Explorer, talvez seja necessário habilitar o suporte para a nova plataforma de teste.

Estúdio Visual

Visual Studio Test Explorer suporta a nova plataforma de teste a partir da versão 17.14. Se você estiver usando uma versão anterior, talvez seja necessário atualizar seu Visual Studio para a versão mais recente.

Código do Visual Studio

Visual Studio Code Test Explorer suporta a nova plataforma de teste a partir da versão X.

Azure DevOps

Ao usar tarefas do Azure DevOps, talvez seja necessário atualizar seu pipeline para usar a nova plataforma de teste.

Tarefa VSTest

Se você estiver usando o de tarefas VSTest no Azure DevOps, poderá substituí-lo pelo de tarefas.NET Core.

Tarefa .NET Core

Se você estiver usando a tarefa .NET Core, nenhuma alteração será necessária.