Comparación de Microsoft.Testing.Platform y VSTest
Microsoft.Testing.Platform
es una alternativa ligera y portátil a VSTest para ejecutar pruebas en la línea de comandos, en canalizaciones de integración continua (CI), en el Explorador de pruebas de Visual Studio y en Visual Studio Code. En este artículo, aprenderá las diferencias clave entre el ejecutor de MSTest y VSTest.
Diferencias en la ejecución de pruebas
Las pruebas se ejecutan de maneras diferentes en función del ejecutor.
Ejecución de pruebas de VSTest
VSTest se incluye con Visual Studio, el SDK de .NET y como una herramienta independiente en el paquete NuGet de Microsoft.TestPlatform . VSTest usa un ejecutable de ejecutor para ejecutar pruebas, denominadas vstest.console.exe
, que se pueden usar directamente o a través de dotnet test
.
Ejecutar pruebas de Microsoft.Testing.Platform
Microsoft.Testing.Platform se inserta directamente en el proyecto de prueba y no envía archivos ejecutables adicionales. Al ejecutar el ejecutable del proyecto, se ejecutan las pruebas. Para obtener más información sobre cómo ejecutar pruebas Microsoft.Testing.Platform, consulte Información general sobre Microsoft.Testing.Platform: Ejecución y depuración de pruebas.
Espacios de nombres y paquetes NuGet
Para familiarizarse con Microsoft.Testing.Platform
y VSTest, resulta útil comprender los espacios de nombres y los paquetes NuGet que usan cada uno.
Espacios de nombres VSTest
VSTest es una colección de herramientas de pruebas que también se conoce como la Plataforma de pruebas. El código fuente de VSTest es de código abierto y está disponible en el repositorio de GitHub microsoft/vstest. El código usa el espacio de nombres Microsoft.TestPlatform.*
.
VSTest es extensible y los tipos comunes se colocan el paquete NuGet Microsoft.TestPlatform.ObjectModel.
Espacios de nombres Microsoft.Testing.Platform
Microsoft.Testing.Platform se basa en el paquete Microsoft.Testing.Platform de NuGet y otras bibliotecas del espacio de nombres Microsoft.Testing.*
. Al igual que VSTest, Microsoft.Testing.Platform
es de código abierto y tiene un repositorio de GitHub microsoft/testfx.
Protocolo de comunicación (versión preliminar)
Nota:
El Explorador de pruebas de Visual Studio admite el protocolo Microsoft.Testing.Platform en las versiones preliminares a partir de la versión 17.10 en adelante. Si ejecuta o depura las pruebas con versiones anteriores de Visual Studio, el Explorador de pruebas usará vstest.console.exe
y el protocolo anterior para ejecutar estas pruebas.
Microsoft.Testing.Platform usa un protocolo basado en JSON-RPC para comunicarse entre Visual Studio y el proceso del ejecutor de pruebas. El protocolo se documenta en el repositorio de GitHub MSTest.
VSTest también usa un protocolo de comunicación basado en JSON, pero no está basado en JSON-RPC.
Deshabilitar el nuevo protocolo
Para deshabilitar el uso del nuevo protocolo en el Explorador de pruebas, puede editar csproj y quitar la funcionalidad TestingPlatformServer
.
<ItemGroup>
<ProjectCapability Remove="TestingPlatformServer" />
</ItemGroup>
Ejecutables
VSTest incluye varios ejecutables, en particular vstest.console.exe
, testhost.exe
, y datacollector.exe
. Sin embargo, MSTest se inserta directamente en el proyecto de prueba y no envía ningún otro archivo ejecutable. El ejecutable en el que se compila el proyecto de prueba se usa para hospedar todas las herramientas de prueba y llevar a cabo todas las tareas necesarias para ejecutar pruebas.