Compartir a través de


Migración de VSTest a Microsoft.Testing.Platform

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 arguments personalizado a la tarea, siga las mismas instrucciones para la migración de dotnet 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 tarea arguments para 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)