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 el proyecto para agregar la siguiente propiedad: <DisableTestingPlatformServerCapability>true</DisableTestingPlatformServerCapability>
.
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.
Migración desde VSTest
Además de los pasos específicos de su marco de pruebas, debe actualizar su infraestructura de pruebas para adaptarse a Microsoft.Testing.Platform
.
dotnet test
Las opciones de línea de comandos de dotnet test
se dividen en 2 categorías: argumentos relacionados con la compilación y argumentos relacionados con la prueba.
Los argumentos relacionados con la construcción se pasan al comando dotnet build
y como tales no necesitan ser actualizados para la nueva plataforma. A continuación se enumeran los argumentos relacionados con la construcción:
-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>
Los argumentos relacionados con las pruebas son específicos de VSTest y, por tanto, deben transformarse para adaptarse a la nueva plataforma. La siguiente tabla muestra el mapeo entre los argumentos de VSTest y la nueva plataforma:
Argumento VSTest | Argumento de la nueva plataforma |
---|---|
--test-adapter-path <ADAPTER_PATH> |
No es compatible |
--blame |
No es compatible |
--blame-crash |
--crashdump requiere extensión de volcado de memoria |
--blame-crash-dump-type <DUMP_TYPE> |
--crashdump-type requiere extensión de volcado de memoria |
--blame-crash-collect-always |
No es compatible |
--blame-hang |
--hangdump requiere extensión de volcado de bloqueo |
--blame-hang-dump-type <DUMP_TYPE> |
--hangdump-type requiere extensión de volcado de bloqueo |
--blame-hang-timeout <TIMESPAN> |
--hangdump-timeout requiere extensión de volcado de bloqueo |
--collect <DATA_COLLECTOR_NAME> |
Depende del recopilador de datos |
-d\|--diag <LOG_FILE> |
--diagnostic |
--filter <EXPRESSION> |
Depende del marco de pruebas seleccionado |
-l\|--logger <LOGGER> |
Depende del registrador |
--results-directory <RESULTS_DIR> |
--results-directory <RESULTS_DIR> |
-s\|--settings <SETTINGS_FILE> |
Depende del marco de pruebas seleccionado |
-t\|--list-tests |
--list-tests |
-- <RunSettings arguments> |
No es compatible |
Importante
Antes de especificar cualquier argumento de Microsoft.Testing.Platform
, debe agregar --
para separar los argumentos de dotnet test
de los nuevos argumentos de la plataforma. Por ejemplo, dotnet test --no-build -- --list-tests
.
vstest.console.exe
Si utiliza vstest.console.exe
directamente, le recomendamos que lo sustituya por el comando dotnet test
.
Explorador de pruebas
Si utiliza Visual Studio o Visual Studio Code Test Explorer, es posible que tenga que habilitar la compatibilidad con la nueva plataforma de pruebas.
Visual Studio
Visual Studio Test Explorer es compatible con la nueva plataforma de pruebas a partir de la versión 17.14. Si utiliza una versión anterior, es posible que deba actualizar Visual Studio a la última versión.
Visual Studio Code
Visual Studio Code Test Explorer es compatible con la nueva plataforma de pruebas a partir de la versión X.
Azure DevOps
Al utilizar las tareas de Azure DevOps, es posible que tenga que actualizar su pipeline para utilizar la nueva plataforma de pruebas.
Tarea VSTest
Si usa la tarea de VSTest en Azure DevOps, puede reemplazarla por la tarea de .NET Core.
Tarea de .NET Core
Si utiliza la tarea .NET Core, no es necesario realizar cambios.