Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
En este artículo se tratan las opciones de configuración avanzadas para MSTest.Sdk. Para la configuración básica e inicio, consulte Introducción a MSTest.
Importante
De forma predeterminada, MSTest.Sdk usa el ejecutor MSTest con Microsoft.Testing.Platform, incluido con dotnet test. 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 para pruebas
Si el project que usa MSTest.Sdk está diseñado para ser una biblioteca auxiliar de utilidad de prueba y no contiene ninguna prueba ejecutable, el project 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>.
Extender Microsoft.Testing.Platform
Puede personalizar Microsoft.Testing.Platform la experiencia a través de un conjunto de paquetes de extensiones NuGet. Para simplificar y mejorar esta experiencia, el SDK de MSTest presenta dos características:
Microsoft. Plataforma de pruebas de testing
El concepto de profiles permite seleccionar el conjunto predeterminado de configuraciones y extensiones que se aplicarán al project de prueba.
Puede establecer el perfil mediante la propiedad TestingExtensionsProfile con uno de los tres perfiles siguientes:
None: no hay extensiones habilitadas.Default: habilita las extensiones recomendadas para esta versión de MSTest.SDK. Este es el valor predeterminado cuando la propiedad no se establece explícitamente.Habilita las siguientes extensiones:
AllMicrosoft: habilite todas las extensiones enviadas por Microsoft (incluidas las extensiones con una licencia restrictiva).Habilita las siguientes extensiones:
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 | ✔️ | ✔️ | |
| Crash Dump | ✔️ | ||
| Falsificaciones | ✔️¹ | ||
| Hang Dump | ✔️ | ||
| 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 Microsoft.Testing.Platform features.
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 pruebas de un extremo a otro confiables para web apps 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.
Actualiza tu proyecto
Al 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 con Sdk="MSTest.Sdk"
- Sdk="Microsoft.NET.Sdk"
+ Sdk="MSTest.Sdk"
Agregue la versión al global.json:
{
"msbuild-sdks": {
"MSTest.Sdk": "4.1.0"
}
}
A continuación, 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 usa, también puede quitar algunos de los paquetes de Microsoft.Testing.Extensions.*.
Actualice su CI
Una vez que haya actualizado los proyectos, si usa Microsoft.Testing.Platform (valor predeterminado) y si confía en dotnet test para ejecutar las pruebas, debe actualizar la 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, esta es una actualización de ejemplo 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 con herramientas delimitadas cuando se trata de actualizar su versión, lo que significa que la interfaz de usuario habitual de NuGet y 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
- Propiedades relacionadas con Microsoft.Testing.Platform
- propiedades relacionadas con VSTest