Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo, aprenderá a migrar de VSTest a Microsoft.Testing.Platform.
Aceptar usar Microsoft.Testing.Platform
El primer paso de la migración es participar en el uso de Microsoft.Testing.Platform.
Para todos los marcos de pruebas, agregue <OutputType>Exe</OutputType> a todos los proyectos de prueba de la solución. Después, siga las instrucciones específicas del marco.
MSTest (herramienta de pruebas de Microsoft)
MSTest admite Microsoft.Testing.Platform a partir de la versión 3.2.0. Sin embargo, se recomienda actualizar a la versión más reciente disponible de MSTest.
Para participar, agregue <EnableMSTestRunner>true</EnableMSTestRunner> debajo de un PropertyGroup en el archivo Directory.Build.props.
Nota:
Al usar MSTest.Sdk, Microsoft.Testing.Platform se usa de forma predeterminada, a menos que <UseVSTest>true</UseVSTest> se especifique.
NUnit
Microsoft.Testing.Platform es compatible con NUnit3TestAdapter a partir de la versión 5.0.0.
Para participar, agregue <EnableNUnitRunner>true</EnableNUnitRunner> en PropertyGroup en el archivo Directory.Build.props.
xUnit.net
Microsoft.Testing.Platform es compatible a partir de xunit.v3.
Para optar por incluir, agregue <UseMicrosoftTestingPlatformRunner>true</UseMicrosoftTestingPlatformRunner> dentro de un archivo PropertyGroup en Directory.Build.props.
dotnet test
Optar por el SDK de .NET 9 y anteriores
En el SDK de .NET 9 y versiones anteriores, no hay compatibilidad nativa con Microsoft.Testing.Platform para dotnet test. El soporte se construye sobre la infraestructura de VSTest. Para usarlo, agregue <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> debajo de un PropertyGroup en el archivo Directory.Build.props.
Importante
Al ejecutar la compatibilidad con Microsoft.Testing.Platform en este modo, debe agregar -- para separar los dotnet test argumentos de los nuevos argumentos de la plataforma. Por ejemplo: dotnet test --no-build -- --list-tests.
Suscribirse al SDK de .NET 10 y versiones más recientes
A partir del SDK de .NET 10, hay compatibilidad nativa con Microsoft.Testing.Platform. Para usarlo, debe especificar el ejecutor de pruebas como Microsoft.Testing.Platform en global.json:
{
"test": {
"runner": "Microsoft.Testing.Platform"
}
}
Importante
En este modo, ya no se utiliza el -- adicional.
Actualizar dotnet test invocaciones
Las opciones de línea de comandos de dotnet test se dividen en dos categorías: argumentos relacionados con la compilación y las relacionadas con pruebas.
Los argumentos relacionados con la compilación son irrelevantes para la plataforma de prueba y, como tal, no es necesario actualizar para la nueva plataforma. Los argumentos relacionados con la compilación se enumeran aquí:
-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 pruebas son específicos de VSTest y, por tanto, deben transformarse para que coincidan con la nueva plataforma. En la tabla siguiente se muestra la asignación entre los argumentos VSTest y la nueva plataforma:
| Argumento VSTest | Nuevo argumento de plataforma |
|---|---|
--test-adapter-path <ADAPTER_PATH> |
No es relevante para Microsoft.Testing.Platform |
--blame |
No es relevante para Microsoft.Testing.Platform |
--blame-crash |
--crashdump (requiere la extensión de volcado de memoria) |
--blame-crash-dump-type <DUMP_TYPE> |
--crashdump-type (requiere extensión para volcado de sistema) |
--blame-crash-collect-always |
No está soportado |
--blame-hang |
--hangdump (requiere la extensión hang dump) |
--blame-hang-dump-type <DUMP_TYPE> |
--hangdump-type (requiere la extensión hang dump) |
--blame-hang-timeout <TIMESPAN> |
--hangdump-timeout (requiere la extensión hang dump) |
--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> |
--test-parameter (proporcionado por VSTestBridge) |
--collect
--collect es un punto de extensibilidad general en VSTest para cualquier recopilador de datos. El modelo de extensibilidad de Microsoft.Testing.Platform es diferente y no hay ningún argumento centralizado que usen todos los recopiladores de datos. Con Microsoft.Testing.Platform, cada recopilador de datos puede agregar su propia opción de línea de comandos. Por ejemplo, la ejecución de Microsoft CodeCoverage a través de VSTest podría ser similar a la siguiente:
dotnet test --collect "Code Coverage;Format=cobertura"
Con Microsoft.Testing.Platform, esto se convierte en:
dotnet test --coverage --coverage-output-format cobertura
Importante
Como se explicó anteriormente, cuando se usa Microsoft.Testing.Platform con VSTest, dotnet test se necesita un extra -- antes de que los argumentos destinados a pasarse a la plataforma.
Por lo tanto, esto se convierte en dotnet test -- --coverage --coverage-output-format cobertura.
--filter
--filter es el filtro basado en VSTest.
MSTest y NUnit admiten el mismo formato de filtro incluso cuando se ejecutan con Microsoft.Testing.Platform.
xUnit.net, no admite el mismo formato de filtro cuando se ejecuta con Microsoft.Testing.Platform. Debe migrar desde el filtro basado en VSTest a la nueva compatibilidad con filtros en xunit.v3, que se proporciona mediante las siguientes opciones de línea de comandos.
xUnit.net opciones específicas:
--filter-class--filter-not-class--filter-method--filter-not-method--filter-namespace--filter-not-namespace--filter-trait--filter-not-trait--filter-query
Para obtener más información, consulte la documentación de Microsoft.Testing.Platform para xUnit.net y lenguaje de filtro de consulta para xUnit.net.
--logger
Lo que normalmente se denomina "registrador" en VSTest se denomina "reportero" en Microsoft.Testing.Platform. En Microsoft.Testing.Platform, el registro solo se realiza explícitamente con fines de diagnóstico.
De forma similar a --collect, --logger es un punto de extensibilidad general en VSTest para cualquier registrador (o, en el contexto de Microsoft.Testing.Platform, cualquier periodista). Cada generador de informes de Microsoft.Testing.Platform tiene la libertad de agregar su propia opción de línea de comandos, por lo tanto, no hay ninguna opción de línea de comandos centralizada como VSTest.--logger
Uno de los registradores de VSTest muy usados es el registrador TRX. Normalmente, este registrador se denomina como sigue:
dotnet test --logger trx
Con Microsoft.Testing.Platform, el comando se convierte en:
dotnet test --report-trx
Importante
Para usar --report-trx, debe tener instalado el Microsoft.Testing.Extensions.TrxReport paquete NuGet.
Importante
Como se explicó anteriormente, cuando se usa Microsoft.Testing.Platform con dotnet test basado en VSTest, se necesita un -- extra antes de que los argumentos destinados a pasarse a la plataforma.
Por lo tanto, esto se convierte en dotnet test -- --report-trx.
--settings
VSTest --settings se usa para especificar un archivo RunSettings para la ejecución de pruebas. RunSettings no es compatible con Microsoft.Testing.Platform principal y se reemplazó por un archivo de configuración más moderno testconfig.json . Sin embargo, MSTest y NUnit siguen siendo compatibles con RunSettings antiguos cuando se ejecuta Microsoft.Testing.Platform y --settings todavía se admite.
vstest.console.exe
Si usa vstest.console.exe directamente, se recomienda reemplazarlo por el dotnet test comando .
Explorador de pruebas
Al usar Visual Studio o el Explorador de pruebas de Visual Studio Code, es posible que tenga que habilitar la compatibilidad con Microsoft.Testing.Platform.
Visual Studio
El Explorador de pruebas de Visual Studio admite Microsoft.Testing.Platform a partir de la versión 17.14. Si usa una versión anterior, es posible que tenga que actualizar Visual Studio a la versión más reciente.
Visual Studio Code
Visual Studio Code junto con C# DevKit es compatible con Microsoft.Testing.Platform.
Azure DevOps
Al usar tareas de Azure DevOps, es posible que tenga que actualizar la canalización para usar Microsoft.Testing.Platform, en función de la tarea que use.
Tarea VSTest
Si usa la tarea VSTest en Azure DevOps, puede reemplazarla por la tarea de .NET Core.
Tarea de la CLI de .NET Core
Si ha pasado
argumentspersonalizado a la tarea, siga las mismas instrucciones para la migración dedotnet test.Si está utilizando la tarea DotNetCoreCLI sin optar por la experiencia nativa de Microsoft.Testing.Platform para el SDK de .NET 10 y versiones posteriores mediante el archivo
global.json, necesita configurar la tareaargumentspara que apunte correctamente al directorio de resultados al que anteriormente apuntaba, así como al informe TRX solicitado. Por ejemplo:- task: DotNetCoreCLI@2 displayName: Run unit tests inputs: command: 'test' arguments: '-- --report-trx --results-directory $(Agent.TempDirectory)