Compartir por


Configuración del SDK de MSTest

En este artículo se tratan las opciones de configuración avanzadas para MSTest.Sdk. Para obtener información básica sobre la configuración y la introducción, consulte Introducción a MSTest.

Importante

De forma predeterminada, MSTest.Sdk usa el ejecutor de MSTest con Microsoft.Testing.Platform, incluida la prueba dotnet. Esto requiere modificar las llamadas de CI y la CLI local, y también afecta a las entradas disponibles de .runsettings. Para mantener las integraciones y herramientas antiguas , cambie a VSTest.

MSTest.Sdk establece EnableMSTestRunner y TestingPlatformDotnetTestSupport en true de forma predeterminada. Para obtener más información sobre la prueba de dotnet y sus diferentes modos, consulte Pruebas con prueba de dotnet.

Bibliotecas auxiliares de utilidad de prueba

Si el proyecto que usa MSTest.Sdk está diseñado para ser una biblioteca auxiliar de utilidad de prueba y no contiene ninguna prueba ejecutable, el proyecto debe tener <IsTestApplication>false</IsTestApplication>.

Selecciona el corredor

De forma predeterminada, el SDK de MSTest se basa en Microsoft.Testing.Platform, pero puede cambiar a VSTest agregando la propiedad <UseVSTest>true</UseVSTest>.

Extensión de Microsoft.Testing.Platform

Puede personalizar la experiencia de Microsoft.Testing.Platform mediante un conjunto de extensiones de paquete NuGet. Para simplificar y mejorar esta experiencia, el SDK de MSTest presenta dos características:

Perfil de Microsoft.Testing.Platform

El concepto de perfiles permite seleccionar el conjunto predeterminado de configuraciones y extensiones que se aplicarán al proyecto de prueba.

Puede establecer el perfil mediante la propiedad TestingExtensionsProfile con uno de los tres perfiles siguientes:

Este es un ejemplo completo de uso del perfil None:

<Project Sdk="MSTest.Sdk/4.1.0">

    <PropertyGroup>
        <TargetFramework>net10.0</TargetFramework>
        <TestingExtensionsProfile>None</TestingExtensionsProfile>
    </PropertyGroup>

</Project>
Extensión/Perfil Ninguno Predeterminado AllMicrosoft
Cobertura de código ✔️ ✔️
Volcado de memoria ✔️
Falsificaciones ✔️¹
Volcado de memoria de bloqueo ✔️
Recarga activa ✔️
Reintentar ✔️
Trx ✔️ ✔️
AzureDevOpsReport ✔️²

¹ MSTest.Sdk 3.7.0+ ² MSTest.Sdk 3.11.0+

Habilitación o deshabilitación de extensiones

Las propiedades de MSBuild pueden habilitar y deshabilitar las extensiones con el patrón Enable[NugetPackageNameWithoutDots].

Por ejemplo, para habilitar la extensión de volcado de memoria (paquete NuGet Microsoft.Testing.Extensions.CrashDump), puede usar la siguiente propiedad EnableMicrosoftTestingExtensionsCrashDump establecida en true:

<Project Sdk="MSTest.Sdk/4.1.0">

<PropertyGroup>
    <TargetFramework>net10.0</TargetFramework>
    <EnableMicrosoftTestingExtensionsCrashDump>true</EnableMicrosoftTestingExtensionsCrashDump>
</PropertyGroup>

</Project>

Para obtener una lista de todas las extensiones disponibles, consulte Extensiones de Microsoft.Testing.Platform.

Advertencia

Es importante revisar los términos de licencia de cada extensión, ya que pueden variar.

Las extensiones habilitadas y deshabilitadas se combinan con las extensiones proporcionadas por el perfil de extensión seleccionado.

Este patrón de propiedad se puede usar para habilitar una extensión adicional sobre el perfil Default implícito (como se ve en el ejemplo anterior de CrashDumpExtension).

También puede deshabilitar una extensión que provenga del perfil seleccionado. Por ejemplo, deshabilite la extensión MS Code Coverage estableciendo <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>:

<Project Sdk="MSTest.Sdk/4.1.0">

    <PropertyGroup>
        <TargetFramework>net10.0</TargetFramework>
        <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>
    </PropertyGroup>

</Project>

Características

Además de la selección del ejecutor y de las extensiones específicas del ejecutor, MSTest.Sdk también proporciona características adicionales para simplificar y mejorar la experiencia de prueba.

Prueba con Aspire

Aspire es una pila bien fundamentada y lista para la nube para compilar aplicaciones observables, listas para producción y distribuidas. Aspire se entrega a través de una colección de paquetes NuGet que manejan preocupaciones específicas para entornos de nube. Para obtener más información, consulte la documentación de Aspire.

Nota:

Esta característica está disponible en MSTest.Sdk 3.4.0.

Al establecer la propiedad EnableAspireTesting en true, puede traer todas las dependencias y directivas predeterminadas using que necesita para realizar pruebas con Aspire y MSTest.

<Project Sdk="MSTest.Sdk/4.1.0">

    <PropertyGroup>
        <TargetFramework>net10.0</TargetFramework>
        <EnableAspireTesting>true</EnableAspireTesting>
    </PropertyGroup>

</Project>

Prueba con Playwright

Playwright permite realizar pruebas de un extremo a otro de forma confiable de aplicaciones web modernas. Para obtener más información, consulte la documentación de Playwright oficial.

Nota:

Esta característica está disponible en MSTest.Sdk 3.4.0.

Al establecer la propiedad EnablePlaywright en true, puede traer todas las dependencias y directivas predeterminadas using que necesita para realizar pruebas con Playwright y MSTest.

<Project Sdk="MSTest.Sdk/4.1.0">

    <PropertyGroup>
        <TargetFramework>net10.0</TargetFramework>
        <EnablePlaywright>true</EnablePlaywright>
    </PropertyGroup>

</Project>

Migración al SDK de MSTest

Tenga en cuenta los pasos siguientes, que son necesarios para migrar al SDK de MSTest.

Actualizar el proyecto

Para migrar un proyecto de prueba de MSTest existente al SDK de MSTest, comience reemplazando la entrada Sdk="Microsoft.NET.Sdk" en la parte superior del proyecto de prueba por Sdk="MSTest.Sdk".

- Sdk="Microsoft.NET.Sdk"
+ Sdk="MSTest.Sdk"

Agregue la versión al global.json:

{
    "msbuild-sdks": {
        "MSTest.Sdk": "4.1.0"
    }
}

Después, puede empezar a simplificar el proyecto.

Elimine las propiedades predeterminadas:

- <EnableMSTestRunner>true</EnableMSTestRunner>
- <OutputType>Exe</OutputType>
- <IsPackable>false</IsPackable>
- <IsTestProject>true</IsTestProject>

Elimine las referencias de paquete predeterminadas:

- <PackageReference Include="MSTest"
- <PackageReference Include="MSTest.TestFramework"
- <PackageReference Include="MSTest.TestAdapter"
- <PackageReference Include="MSTest.Analyzers"
- <PackageReference Include="Microsoft.NET.Test.Sdk"

Por último, en función del perfil de extensiones que use, también puede quitar algunos de los paquetes Microsoft.Testing.Extensions.*.

Actualice su CI

Una vez que haya actualizado sus proyectos, si está utilizando Microsoft.Testing.Platform (predeterminado) y si confía en dotnet test para ejecutar sus pruebas, debe actualizar su configuración de CI. Para obtener más información y orientarle sobre todos los cambios necesarios, consulte Integración de pruebas de dotnet.

Si usa el modo VSTest de dotnet test, aquí tienes un ejemplo de actualización al usar la tarea DotNetCoreCLI en Azure DevOps.

\- task: DotNetCoreCLI@2
  inputs:
    command: 'test'
    projects: '**/**.sln'
-    arguments: '--configuration Release'
+    arguments: '--configuration Release -- --report-trx --results-directory $(Agent.TempDirectory) --coverage'

Limitaciones conocidas

Los SDK de MSBuild proporcionados por NuGet (incluido MSTest.Sdk) tienen compatibilidad limitada con herramientas cuando se trata de actualizar su versión, lo que significa que la actualización habitual de NuGet y la interfaz de usuario de Visual Studio para administrar paquetes NuGet no funciona según lo previsto. Deberá actualizar manualmente la versión en el archivo global.json y en el archivo del proyecto. (Esto se aplica incluso si usa Dependabot debido a problemas dependabot-core#12824 y dependabot-core#8615).

Consulte también