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 les pipelines d’intégration continue (CI), l’interface CLI, l’Explorateur de tests Visual Studio et l’Explorateur de texte 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.
Microsoft.Testing.Platform
est open source. Vous trouverez du code Microsoft.Testing.Platform
dans le référentiel GitHub microsoft/testfx.
Piliers 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 .NET Framework et .NET Core/.NET, certaines fonctionnalités clés telles que le plug-in-system et les nouveaux facteurs de forme possibles des compilations .NET ont rendu complexe l’évolution ou la prise en charge complète de la nouvelle fonctionnalité d’exécution avec l’architecture actuelle de la plateforme VSTest.
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 .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
ouAssemblyLoadContext
, 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.
Dépendances zéro : le cœur de la plateforme est un assembly .NET unique,
Microsoft.Testing.Platform.dll
qui n’a aucune dépendance autre 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.
Prise en charge de tous les facteurs de forme .NET : prendre en charge les facteurs de forme .NET actuels et futurs, 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, plutôt que de fournir des détails d’implémentation sur la façon de le faire.
Extensible suffisamment : la nouvelle plateforme repose sur des points d’extensibilité pour permettre une personnalisation maximale de l’exécution du runtime. 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
- MSTest. Dans MSTest, la prise en charge de
Microsoft.Testing.Platform
est effectuée via l’exécuteur MSTest. - NUnit. Dans NUnit, la prise en charge de
Microsoft.Testing.Platform
est effectuée par l’exécuteur NUnit. - xUnit.net : Dans xUnit.net, la prise en charge de
Microsoft.Testing.Platform
se fait par le runner xUnit.net. - TUnit : entièrement construit sur le
Microsoft.Testing.Platform
, pour plus d’informations, veuillez consulter la documentation TUnit
Exécuter et déboguer des tests
Les projets de test Microsoft.Testing.Platform
sont générés en tant qu’exécutables qui peuvent être exécutés (ou débogués) directement. Il n’existe aucune console ou commande supplémentaire exécutant des tests. L’application se ferme avec un code de sortie différent de zéro s’il existe une erreur, comme c’est généralement le cas avec la plupart des exécutables. Pour plus d’informations sur les codes de sortie connus, consultez codes de sortie Microsoft.Testing.Platform.
Important
Par défaut, Microsoft.Testing.Platform
collecte les données de télémétrie. Pour plus d’informations et d’options sur la désactivation, consultez Télémétrie Microsoft.Testing.Platform.
La publication du projet de test à l’aide dotnet publish
de l’application et l’exécution directe de l’application est un autre moyen d’exécuter vos tests. Par exemple, l’exécution du ./Contoso.MyTests.exe
. Dans certains scénarios, il est également viable d’utiliser dotnet build
pour produire l’exécutable, mais il peut y avoir des cas de périphérie à prendre en compte, comme AOT natif.
Utilisez dotnet run
.
La dotnet run
commande peut être utilisée pour générer et exécuter votre projet de test. C’est le plus simple, bien que parfois lent, moyen d’exécuter vos tests. L’utilisation de dotnet run
est pratique lorsque vous modifiez et exécutez des tests localement, car elle garantit que le projet de test est reconstruit lorsque nécessaire. dotnet run
recherche également automatiquement le projet dans le dossier actif.
dotnet run --project Contoso.MyTests
Pour plus d’informations sur dotnet run
, consultez dotnet run.
Utilisez dotnet exec
.
La commande dotnet exec
ou dotnet
est utilisée pour exécuter (ou lancer) un projet de test déjà généré, il s’agit d’une alternative à l’exécution directe de l’application. dotnet exec
nécessite le chemin d’accès à la dll de projet de test générée.
dotnet exec Contoso.MyTests.dll
or
dotnet Contoso.MyTests.dll
Remarque
La fourniture du chemin d’accès à l’exécutable du projet de test (*.exe) entraîne une erreur :
Error:
An assembly specified in the application dependencies manifest
(Contoso.MyTests.deps.json) has already been found but with a different
file extension:
package: 'Contoso.MyTests', version: '1.0.0'
path: 'Contoso.MyTests.dll'
previously found assembly: 'S:\t\Contoso.MyTests\bin\Debug\net8.0\Contoso.MyTests.exe'
Pour plus d’informations sur dotnet exec
, consultez dotnet exec.
Utilisez dotnet test
.
Microsoft.Testing.Platform
offre une couche de compatibilité avec vstest.console.exe
et dotnet test
, vous assurant que vous pouvez exécuter vos tests comme avant tout en activant un nouveau scénario d’exécution.
dotnet test Contoso.MyTests.dll
Options
La liste ci-dessous ne décrit que les options de la plateforme. Pour afficher les options spécifiques apportées par chaque extension, consultez la page de documentation de l’extension ou utilisez l’option --help
.
--diagnostic
Permet d’afficher la page de journalisation des diagnostics. Le niveau de journalisation par défaut est Trace
. Le fichier est écrit dans le répertoire de sortie au format de nom suivant. log_[MMddHHssfff].diag
--diagnostic-filelogger-synchronouswrite
Permet de forcer l’enregistreur d’événements de fichiers intégré à écrire des journaux de manière synchrone. Utile pour les scénarios où vous ne souhaitez perdre aucune entrée de journal (si le processus se bloque). Cela ralentit l’exécution de tests.
--diagnostic-output-directory
Le répertoire de sortie de la journalisation des diagnostics, s’il n’est pas spécifié, le fichier est généré dans le répertoire TestResults par défaut.
--diagnostic-output-fileprefix
Préfixe du nom de fichier journal. La valeur par défaut est "log_"
.
--diagnostic-verbosity
Permet de définir le niveau de verbosité lorsque le commutateur --diagnostic
est utilisé. Les valeurs disponibles sont Trace
, Debug
, Information
, Warning
, Error
ou Critical
.
--help
Affiche une description de l’utilisation de la commande.
-ignore-exit-code
Permet à certains codes de sortie non nuls d’être ignorés et d’être retournés en tant que 0
à la place. Pour plus d’informations, consultez Ignorer des codes de sortie spécifiques.
--info
Affiche des informations avancées sur l’application de test .NET, telles que :
- La plateforme.
- L’environnement.
- Chaque fournisseur de ligne de commande inscrit, tel que le sien,
name
,version
description
etoptions
. - Chaque outil inscrit, tel que le sien,
command
,name
,version
,description
et tous les fournisseurs de ligne de commande.
Cette fonctionnalité est utilisée pour comprendre les extensions qui effectuent l’inscription de la même option de ligne de commande ou les modifications apportées aux options disponibles entre plusieurs versions d’une extension (ou la plateforme).
--list-tests
Répertoriez les tests disponibles. Les tests ne seront pas exécutés.
--minimum-expected-tests
Spécifie le nombre minimal de tests censés s’exécuter. Par défaut, au moins un test est censé s’exécuter.
--results-directory
Répertoire où les résultats de test doivent être placés. Si le répertoire spécifié n’existe pas, il est créé. La valeur par défaut est TestResults
dans le répertoire qui contient l’application test.
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 l'intégration des tests dotnet. - Support pour
ProjectCapability
requis par les Explorateurs de TestsVisual Studio
etVisual Studio Code
. - Génération automatique du point d’entrée (méthode
Main
). - Génération automatique du fichier de configuration.
Remarque
Cette intégration fonctionne de manière transitive (un projet qui fait référence à un autre projet faisant référence à ce package se comporte comme s’il référence le package) et peut être désactivé via la IsTestingPlatformApplication
propriété MSBuild.