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.
MSTest.Sdk es un SDK de proyecto de MSBuild para compilar aplicaciones de MSTest. Aunque se puede compilar una aplicación de MSTest sin el SDK, el SDK de MSTest:
- Esta adaptado para proporcionar una experiencia de primera clase para realizar pruebas con MSTest.
- Es el destino recomendado para la mayoría de los usuarios.
- Fácil de configurar para otros usuarios.
De forma predeterminada, el SDK de MSTest detecta y ejecuta las pruebas mediante el ejecutor de MSTest para Microsoft.Testing.Platform. Puede cambiar a usar VSTest especificando <UseVSTest>true</UseVSTest>
Puede habilitar MSTest.Sdk
en un proyecto simplemente actualizando el atributo Sdk
del nodo Project
del proyecto:
<Project Sdk="MSTest.Sdk/3.8.3">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
</Project>
Nota:
/3.8.3
se da como ejemplo y se puede reemplazar por cualquier versión más reciente.
Para simplificar el control de las versiones, se recomienda establecer la versión del SDK en el nivel de solución mediante el archivo global.json. Por ejemplo, el archivo del proyecto tendría el siguiente aspecto:
<Project Sdk="MSTest.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
</Project>
A continuación, especifique la versión MSTest.Sdk
en el archivo global.json de la siguiente manera:
{
"msbuild-sdks": {
"MSTest.Sdk": "3.8.3"
}
}
Para obtener más información, consulte Uso del SDK de proyecto de MSBuild.
Al build
el proyecto, todos los componentes necesarios se restauran e instalan mediante el flujo de trabajo estándar de NuGet establecido por el proyecto.
No necesita nada más para compilar y ejecutar las pruebas y puede usar las mismas herramientas (por ejemplo, dotnet test
o Visual Studio) usadas por un proyecto de MSTest "clásico".
Importante
Al cambiar a MSTest.Sdk
, opta por usar el ejecutor de MSTest (habilita Microsoft.Testing.Platform para MSTest), incluso con dotnet test. Esto requiere modificar las llamadas de CI y la CLI local, y también afecta a las entradas disponibles de .runsettings. Puede usar MSTest.Sdk
y mantener las integraciones y herramientas antiguas si cambia el ejecutor.
De forma predeterminada, MSTest.Sdk establece EnableMSTestRunner
y TestingPlatformDotnetTestSupport
en true. Para obtener más información sobre la prueba de dotnet y sus diferentes modos para ejecutar Microsoft.Testing.Platform, consulte Pruebas con prueba de dotnet.
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:
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
: habilita todas las extensiones suministradas 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/3.8.3">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<TestingExtensionsProfile>None</TestingExtensionsProfile>
</PropertyGroup>
</Project>
Extensión/Perfil | Ninguno | Predeterminado | AllMicrosoft |
---|---|---|---|
Cobertura de código | ✔️ | ✔️ | |
Volcado de memoria | ✔️ | ||
Falsificaciones | ✔️ (MSTest.Sdk 3.7.0+) | ||
Volcado de memoria de bloqueo | ✔️ | ||
Recarga activa | ✔️ | ||
Reintentar | ✔️ | ||
Trx | ✔️ | ✔️ |
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/3.8.3">
<PropertyGroup>
<TargetFramework>net8.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/3.8.3">
<PropertyGroup>
<TargetFramework>net8.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 .NET Aspire
.NET Aspire es una plataforma con enfoque definido, preparada para la nube, para desarrollar aplicaciones observables, distribuidas y listas para producción. .NET Aspire se entrega a través de una colección de paquetes NuGet que controlan problemas específicos nativos de la nube. Para obtener más información, consulte los documentos de .NET 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/3.4.0">
<PropertyGroup>
<TargetFramework>net8.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/3.4.0">
<PropertyGroup>
<TargetFramework>net8.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": "3.8.3"
}
}
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í tiene 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. Vea este problema para obtener más información: NuGet#13127.
Nota:
Esta limitación no es específica del SDK de MSTest, sino del SDK de MSBuild proporcionado por NuGet.
Dependabot controlará la actualización de la versión en el archivo global.json
, pero deberá actualizar manualmente la versión en el archivo de proyecto.