Partager via


Mise à niveau de MSTestV1 vers MSTestV2

Vous pouvez mettre à niveau votre projet de test en reciblant la version MSTest référencée dans votre fichier .csproj de MSTestV1 vers MSTestV2. Toutes les fonctionnalités de MSTestV1 n’ont pas été mises en avant dans MSTestV2. Certaines modifications peuvent donc être nécessaires pour résoudre les erreurs. Consultez Fonctionnalités MSTestV1 qui ne sont pas prises en charge dans MSTestV2 pour découvrir les fonctionnalités qui ne fonctionnent plus. Il est possible que certaines de ces fonctionnalités doivent être supprimées de vos tests.

  1. Supprimez la référence d’assembly à Microsoft.VisualStudio.QualityTools.UnitTestFramework de votre projet de test unitaire.

  2. Ajoutez des références de package NuGet à MSTestV2, notamment les packages MSTest.TestFramework et MSTest.TestAdapter sur nuget.org. Vous pouvez installer des packages dans la console du Gestionnaire de package NuGet avec les commandes suivantes :

    PM> Install-Package MSTest.TestAdapter -Version 3.1.1
    PM> Install-Package MSTest.TestFramework -Version 3.1.1
    

Exemple csproj de style ancien

Échantillon .csproj ciblant MSTestV1 :

<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
  <Private>False</Private>
</Reference>

Échantillon .csproj ciblant maintenant 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>

Remarque

Les projets de test qui sont des tests codés de l’interface utilisateur ou des tests de charge web ne sont pas compatibles avec MSTestV2. Ces types de projets ont été déconseillés. En savoir plus sur Dépréciation des tests codés de l’interface utilisateur et Dépréciation du test de charge web.

Csproj de style SDK (.NET Core et .NET 5 ou version ultérieure)

Si votre .csproj est le .csproj de style sdk plus récent, vous utilisez probablement déjà MSTestV2. Vous trouverez les packages NuGet pour MSTestV2 et l’adaptateur MSTestV2 sur NuGet.

Exemple :

<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>

Pourquoi effectuer une mise à niveau vers MSTestV2 ?

En 2016, nous avons publié l’étape suivante de l’évolution de l’infrastructure MSTest avec MSTestV2. Vous pouvez en savoir plus sur ce changement dans l’annonce billet de blog.

  • MSTestV2 est plus facilement acquis et mis à jour, car il est fourni sous la forme d’un package NuGet.

  • MSTestV2 est open source.

  • Prise en charge uniforme de la plateforme d’application : MSTestV2 est une implémentation convergente qui offre une prise en charge uniforme de la plateforme d’applications sur .NET Framework, .NET Core, ASP.NET Core et UWP. En savoir plus.

  • L’implémentation est entièrement multiplateforme (Windows, Linux, Mac). En savoir plus.

  • MSTestV2 prend en charge le ciblage de .NET Framework 4.5.0 et versions ultérieures, .NET Core 1.0 et versions ultérieures (Universal Windows Apps 10+), ASP.NET Core 1.0 et versions ultérieures, et .NET 5 et versions ultérieures.

  • Fournit un mécanisme d’extensibilité unique et uniforme pour l’utilisateur final. En savoir plus.

  • Fournit une prise en charge uniforme DataRow pour tous les projets de test MSTest. En savoir plus.

  • Permet de placer l’attribut TestCategory au niveau d’une classe ou d’un assembly. En savoir plus.

  • Les méthodes de test des classes de base définies dans un autre assembly sont désormais découvertes et exécutées à partir de la classe Test dérivée. Cette modification apporte un comportement cohérent avec des types de classes de test dérivés. Si ce comportement n’est pas requis pour des raisons de compatibilité, il peut être modifié à l’aide des paramètres d’exécution suivants :

    <RunSettings>    
    <MSTest> 
      <EnableBaseClassTestMethodsFromOtherAssemblies>false</EnableBaseClassTestMethodsFromOtherAssemblies> 
    </MSTest> 
    </RunSettings>
    
  • Fournit un contrôle plus précis sur l’exécution parallèle via l’exécution parallèle dans l’assembly de tests. Cette fonctionnalité permet d’exécuter des tests au sein d’un assembly en parallèle.

  • La méthode TestCleanup sur un TestClass est appelée même si sa méthode correspondante TestInitialize échoue. Détails du problème.

  • Le temps pris par AssemblyInitialize et ClassInitialize n’est pas comptabilisé dans la durée du test. Ce changement limite leur impact sur le délai d’expiration d’un test.

  • Les tests qui ne sont pas exécutables peuvent être configurés pour être marqués comme ayant échoué via la balise MapNotRunnableToFailed, qui fait partie du nœud de l’adaptateur dans le fichier .runsettings.

    <RunSettings>    
    <MSTest> 
      <MapNotRunnableToFailed>true</MapNotRunnableToFailed> 
    </MSTest> 
    </RunSettings>
    

Fonctionnalités MSTestV1 qui ne sont pas prises en charge dans MSTestV2

  • Les tests ne peuvent pas être inclus dans un « Test ordonné ».
  • Modifications apportées au fichier .testsettings :
    • Ne peut plus être utilisé pour configurer l’adaptateur.
    • Ne prend plus en charge la section <LegacySettings>, ce qui signifie que vous ne pouvez pas l’utiliser pour définir des attributs. Par exemple : DeploymentItem. Utilisez le nouveau fichier .runsettings pour la configuration de la série de tests.
  • L’adaptateur ne prend pas en charge les listes de test spécifiées sous la forme d’un fichier .vsmdi .
  • Les types « Projet de test codé de l’interface utilisateur » et « Projet de test de charge et de performances web » ne sont pas pris en charge. En savoir plus sur Dépréciation des tests codés de l’interface utilisateur et Dépréciation du test de charge web.
  • L’association à un élément TestCase dans TFS n’est pas prise en charge.