Partager via


Vue d’ensemble de Microsoft.Testing.Platform

Microsoft.Testing.Platform est une alternative légère et portable à VSTest pour exécuter des tests dans tous les contextes, notamment l’intégration continue (CI) pipelines, l’interface CLI, l’Explorateur de tests Visual Studio et l’Explorateur de tests VS Code. Microsoft.Testing.Platform est intégré directement dans vos projets de test et il n’existe aucune autre dépendance d’application, telles que vstest.console ou dotnet test nécessaire pour exécuter vos tests.

Conseil / Astuce

Si vous avez besoin d’aide pour choisir entre VSTest et Microsoft.Testing.Platform, commencez par une vue d’ensemble des plateformes de test.

Utilisez cet article lorsque vous avez déjà décidé d’utiliser Microsoft.Testing.Platform et que vous souhaitez comprendre son modèle, ses fonctionnalités et son comportement opérationnel.

Microsoft.Testing.Platform est open source. Vous trouverez Microsoft.Testing.Platform code dans microsoft/testfx GitHub référentiel.

Commencer ici

Utilisez le chemin d’accès suivant, en fonction de ce dont vous avez besoin ensuite :

Les piliers de Microsoft.Testing.Platform

Cette nouvelle plateforme de test repose sur l'expérience de l'équipe .NET Developer Experience Testing et vise à relever les défis rencontrés depuis la publication de .NET Core en 2016. Bien qu'il existe un niveau élevé de compatibilité entre l'infrastructure .NET et le .NET Core/.NET, certaines fonctionnalités clés telles que le plug-in-system et les nouveaux facteurs de forme possibles d'.NET compilations ont rendu complexe l'évolution ou la prise en charge complète de la nouvelle fonctionnalité d'exécution avec la plateforme VSTest actuelle architecture.

Les principaux facteurs moteurs de l’évolution de la nouvelle plateforme de test sont détaillés dans les éléments suivants :

  • Déterminisme : s’assurer que l’exécution des mêmes tests dans différents contextes (local, CI) produit le même résultat. Le nouveau runtime ne s’appuie pas sur la réflexion ou toute autre fonctionnalité de runtime de .NET dynamique pour coordonner une exécution de test.

  • Transparence du runtime : le runtime de test n’interfère pas avec le code de l’infrastructure de test, il ne crée pas de contextes isolés tels AppDomain ou AssemblyLoadContext, et n’utilise pas de résolution d’assembly personnalisé ou de réflexion.

  • Inscription au moment de la compilation des extensions : les extensions, telles que les frameworks de test et les extensions in/out-of-process, sont inscrites pendant la compilation pour garantir le déterminisme et faciliter la détection des incohérences.

  • Zero dépendances : le cœur de la plateforme est un assembly .NET unique, Microsoft.Testing.Platform.dll, qui n’a pas de dépendances autres que les runtimes pris en charge.

  • Hostable : le runtime de test peut être hébergé dans n’importe quelle application .NET. Bien qu’une application console soit couramment utilisée pour exécuter des tests, vous pouvez créer une application de test dans n’importe quel type d’application .NET. Cela vous permet d’exécuter des tests dans des contextes spéciaux, tels que des appareils ou des navigateurs, où il peut y avoir des limitations.

  • Supporter tous les facteurs de forme de .NET : Prendre en charge les facteurs de forme actuels et futurs .NET, y compris l’AOT natif.

  • Performant : trouver le bon équilibre entre les fonctionnalités et les points d’extension pour éviter de gonfler le runtime avec du code non fondamental. La nouvelle plateforme de test est conçue pour « orchestrer » une exécution de test, au lieu de fournir des détails d’implémentation sur la façon de le faire.

  • Suffisamment extensible : la nouvelle plateforme est basée sur des points d’extensibilité pour permettre une personnalisation maximale de l’exécution. Il vous permet de configurer l’hôte de processus de test, d’observer le processus de test et d’utiliser des informations à partir de l’infrastructure de test dans le processus hôte de test.

  • Déploiement de module unique : la fonctionnalité d’hébergement permet un modèle de déploiement de module unique, où un résultat de compilation unique peut être utilisé pour prendre en charge tous les points d’extensibilité, à la fois hors processus et in-process, sans avoir à expédier différents modules exécutables.

Frameworks de test pris en charge

Frameworks cibles pris en charge

Microsoft.Testing.Platform prend en charge .NET (.NET 8 et versions ultérieures), .NET Framework (versions 4.6.2 et ultérieures) et cible NETStandard 2.0 pour une compatibilité maximale avec d’autres runtimes.

Exécuter et déboguer des tests

Pour obtenir des instructions détaillées sur l’exécution et le débogage de projets de test MTP à partir de l’interface CLI, Visual Studio, Visual Studio Code et ci pipelines, consultez Exécuter et déboguer des tests.

Paramètres

Pour obtenir la liste complète des options de ligne de commande de plateforme et d’extension, consultez les informations de référence sur les options CLI de Microsoft.Testing.Platform.

Intégration de MSBuild

Le package NuGet Microsoft.Testing.Platform.MSBuild fournit diverses intégrations pour Microsoft.Testing.Platform avec MSBuild :

  • Prise en charge de dotnet test. Pour plus d’informations, consultez Test avec dotnet test.
  • Prise en charge de ProjectCapability requise par Visual Studio et Visual Studio Code Explorateurs de tests.
  • Génération automatique du point d’entrée (méthode Main).
  • Génération automatique du fichier de configuration.
  • Détection et inscription automatiques des packages d’extension installés.

Lorsque ce package est actif (la valeur par défaut pour MSTest, NUnit et les exécuteurs xUnit), l’installation d’un package NuGet d’extension est tout ce qui est nécessaire : les extensions sont enregistrées automatiquement sans modification du code. Si vous désactivez le point d’entrée généré automatiquement en définissant <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>, vous devez inscrire manuellement des extensions dans votre Main méthode. Chaque page d’extension documente son appel d’inscription manuel.

Remarque

Cette intégration fonctionne de manière transitive (un project qui fait référence à une autre project référençant ce package se comporte comme s’il référence le package) et peut être désactivé via la propriété IsTestingPlatformApplication MSBuild.

Voir aussi