Actualización de MSTestV1 a MSTestV2
Para actualizar el proyecto de prueba, puede redirigir la versión de MSTest referenciada en su .csproj desde MSTestV1 a MSTestV2. No todas las características de MSTestV1 se han reenviado a MSTestV2, por lo que es posible que se requieran algunos cambios para resolver errores. Consulte características de MSTestV1 que no se admiten en MSTestV2 para comprender qué características ya no funcionan. Es posible que algunas de estas características deban quitarse de las pruebas.
Quite la referencia de ensamblado a Microsoft.VisualStudio.QualityTools.UnitTestFramework del proyecto de prueba unitaria.
Agregue referencias de paquete NuGet a MSTestV2, incluidos los paquetes MSTest.TestFramework y MSTest.TestAdapter en nuget.org. Puede instalar paquetes en la consola del Administrador de paquetes NuGet con los siguientes comandos:
PM> Install-Package MSTest.TestAdapter -Version 3.1.1 PM> Install-Package MSTest.TestFramework -Version 3.1.1
Ejemplo de csproj de estilo antiguo
Ejemplo .csproj destinado a MSTestV1:
<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<Private>False</Private>
</Reference>
.csproj de muestra que ahora tiene como destino MSTestV2:
<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\MSTest.TestFramework.2.1.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath>
</Reference>
Nota
Los proyectos de prueba que son pruebas automatizadas de IU o pruebas de carga web no son compatibles con MSTestV2. Estos tipos de proyecto han quedado en desuso. Obtenga más información en Desuso de la prueba de IU codificada y Desuso de la prueba de carga web.
Archivo csproj de estilo SDK (.NET Core y .NET 5 o versiones posteriores)
Si su .csproj es el .csproj de estilo SDK más reciente, probablemente ya esté usando MSTestV2. Puede encontrar los paquetes NuGet para MSTestV2 y el adaptador MSTestV2 en NuGet.
Ejemplo:
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.1" />
<PackageReference Include="MSTest.TestAdapter" Version="3.1.1" />
<PackageReference Include="MSTest.TestFramework" Version="3.1.1" />
</ItemGroup>
¿Por qué actualizar a MSTestV2?
En 2016, publicamos el siguiente paso en la evolución del marco MSTest con MSTestV2. Puede leer más sobre este cambio en la entrada de blog del anuncio.
MSTestV2 se adquiere y actualiza más fácilmente porque se entrega como un paquete NuGet de .
Compatibilidad uniforme con la plataforma de aplicaciones: MSTestV2 es una implementación convergente que ofrece compatibilidad uniforme con la plataforma de aplicaciones en .NET Framework, .NET Core, ASP.NET Core y UWP. Más información.
La implementación es totalmente multiplataforma (Windows, Linux, Mac). Más información.
MSTestV2 admite .NET Framework 4.5.0 y versiones posteriores, .NET Core 1.0 y versiones posteriores (Aplicaciones universales de Windows 10+), ASP.NET Core 1.0 y versiones posteriores, y .NET 5 y versiones posteriores.
Proporciona un mecanismo único y uniforme de extensibilidad para el usuario final. Más información.
Proporciona una compatibilidad uniforme
DataRow
con todos los proyectos de prueba basados en MSTest. Más información.Habilita la colocación del atributo
TestCategory
en el nivel de una clase o ensamblado. Más información.Los métodos de prueba de las clases base definidas en otro ensamblado ahora se detectan y se ejecutan desde la clase Test derivada. Este cambio aporta un comportamiento coherente con los tipos de clase de prueba derivados. Si este comportamiento no es necesario por motivos de compatibilidad, se puede volver a cambiar mediante la siguiente configuración de ejecución:
<RunSettings> <MSTest> <EnableBaseClassTestMethodsFromOtherAssemblies>false</EnableBaseClassTestMethodsFromOtherAssemblies> </MSTest> </RunSettings>
Proporciona un control más preciso sobre la ejecución en paralelo mediante la ejecución en paralelo en ensamblado de pruebas. Esta característica permite ejecutar pruebas dentro de un ensamblado en paralelo.
El método
TestCleanup
en unTestClass
se invoca incluso si se produce un error en su método deTestInitialize
correspondiente. Detalles del problema.El tiempo que tardan
AssemblyInitialize
yClassInitialize
no se cuenta para la duración de la prueba. Este cambio limita su impacto en el tiempo de espera de la prueba.Las pruebas que no se pueden ejecutar se pueden configurar para que se marquen como erróneas a través de la etiqueta
MapNotRunnableToFailed
, que forma parte del nodo adaptador del archivo.runsettings
.<RunSettings> <MSTest> <MapNotRunnableToFailed>true</MapNotRunnableToFailed> </MSTest> </RunSettings>
Características de MSTestV1 que no se admiten en MSTestV2
- Las pruebas no se pueden incluir en una "Prueba ordenada".
- Cambios en el archivo
.testsettings
:- Ya no se puede usar para configurar el adaptador.
- Ya no admite la sección
<LegacySettings>
, lo que significa que no se puede usar para establecer atributos. Por ejemplo,DeploymentItem
. Utilice el nuevo archivo .runsettings para la configuración de ejecución de prueba.
- El adaptador no admite listas de pruebas especificadas como un archivo de .vsmdi.
- No se admiten los tipos "Proyecto de prueba automatizada de IU" y "Proyecto de prueba de carga y rendimiento web". Obtenga más información en Desuso de la prueba de IU codificada y Desuso de la prueba de carga web.
- No se admite la asociación con un elemento testcase en TFS.