Actualización de MSTestV1 a MSTestV2

Puede actualizar el proyecto de prueba cambiando el destino de la versión de MSTest a la que se hace referencia en el archivo .csproj de MSTestV1 a MSTestV2. No se han incluido todas las características de MSTestV1 en MSTestV2, por lo que puede que sea necesario realizar algunos cambios para resolver los errores. Consulte Características de MSTestV1 que no se admiten en MSTestV2 para entender qué características dejarán de funcionar. Puede que se tengan que quitar algunas de ellas de sus pruebas.

  1. Quite la referencia de ensamblado a Microsoft.VisualStudio.QualityTools.UnitTestFramework del proyecto de prueba unitaria.

  2. Añada referencias de paquetes NuGet a MSTestV2, incluidos los paquetes MSTest.TestFramework y MSTest.TestAdapter de nuget.org. Puede instalar paquetes en la consola del administrador de paquetes de 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

.csproj de muestra que tiene como destino 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 de IU codificadas o pruebas de carga web no son compatibles con MSTestV2. Estos tipos de proyectos 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 de 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é realizar la actualización a MSTestV2?

En 2016, publicamos el siguiente paso para desarrollar el marco de 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.

  • MSTestV2 es de código abierto.

  • Compatibilidad con la plataforma de aplicaciones uniforme: MSTestV2 es una implementación que ofrece compatibilidad con la plataforma de aplicaciones uniforme en .NET Framework, .NET Core, ASP.NET Core y UWP. Más información.

  • La implementación es totalmente multiplataforma (Windows, Linux y Mac). Más información.

  • MSTestV2 admite el uso como destino de .NET Framework 4.5.0 y versiones posteriores, .NET Core 1.0 y versiones posteriores (aplicaciones universales de Windows 10 y posteriores), ASP.NET Core 1.0 y versiones posteriores, y .NET 5 y versiones posteriores.

  • Proporciona un mecanismo de extensibilidad de usuario final uniforme y único. Más información.

  • Proporciona una compatibilidad uniforme con DataRow para todos los proyectos de prueba basados en MSTest. Más información.

  • Permite colocar el atributo TestCategory en el nivel de una clase o un ensamblado. Más información.

  • Los métodos de prueba de las clases base definidas en otro ensamblado ahora se detectan y ejecutan desde la clase de prueba 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 con los siguientes parámetros 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 TestClass se invoca incluso aunque se produzca un error en su método TestInitialize correspondiente. Detalles del problema.

  • El tiempo que tardan AssemblyInitialize y ClassInitialize 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 son ejecutables se pueden configurar para que se marquen como erróneas mediante la etiqueta MapNotRunnableToFailed, que forma parte del nodo de adaptador en el 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 por orden".
  • 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. Use el nuevo archivo .runsettings para la configuración de la serie de pruebas.
  • El adaptador no admite listas de pruebas especificadas como un archivo .vsmdi.
  • No se admiten los tipos "Proyecto de prueba de IU codificada" ni "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.