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 NuGet Microsoft.TestPlatform. O VSTest usa um executável runner para executar testes, chamado vstest.console.exe
, que pode ser usado diretamente ou através do 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
o VSTest e o 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 GitHub microsoft/vstest . O código usa o Microsoft.TestPlatform.*
namespace.
VSTest é extensível e tipos comuns são colocados no pacote NuGet Microsoft.TestPlatform.ObjectModel .
Namespaces Microsoft.Testing.Platform
Microsoft.Testing.Platform é baseado no pacote NuGet Microsoft.Testing.Platform e em outras bibliotecas no Microsoft.Testing.*
namespace. Como o VSTest, o Microsoft.Testing.Platform
é de código aberto e tem um repositório GitHub da microsoft/testfx .
Protocolo de comunicação (pré-visualização)
Nota
O Visual Studio Test Explorer suporta o protocolo Microsoft.Testing.Platform nas versões de pré-visualização desde 17.10 em diante. Se você executar/depurar seus testes usando versões anteriores do Visual Studio, 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 desativar o uso do novo protocolo no Test Explorer, você pode editar o csproj e remover o TestingPlatformServer
recurso.
<ItemGroup>
<ProjectCapability Remove="TestingPlatformServer" />
</ItemGroup>
Executáveis
O VSTest envia vários executáveis, notavelmente vstest.console.exe
, testhost.exe
e 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.