Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Conseil / Astuce
Lors de l’utilisation de Microsoft.Testing.Platform.MSBuild (inclus transitivement par MSTest, NUnit et xUnit Runners), les extensions de couverture de code sont inscrites automatiquement lorsque vous installez leurs packages NuGet, sans modification du code nécessaire.
Vous pouvez utiliser la fonctionnalité de couverture du code avec Microsoft. Testing.Platform (MTP) pour déterminer quelle proportion du code de votre projet est testée par des tests codés tels que des tests unitaires. Pour apporter une protection efficace contre les bogues, vos tests doivent s’effectuer sur ou couvrir une proportion importante de votre code.
Couverture du code Microsoft
L’analyse de la couverture du code Microsoft est possible pour le code managé (CLR) et non managé (natif). L’instrumentation statique et dynamique est prise en charge. Cette extension nécessite le package NuGet Microsoft.Testing.Extensions.CodeCoverage .
Note
La couverture du code non managé (native) est désactivée par défaut dans l’extension. Utilisez des indicateurs EnableStaticNativeInstrumentation et EnableDynamicNativeInstrumentation pour l’activer si nécessaire.
Pour plus d’informations sur la couverture de code non managé, consultez Instrumentation native statique et dynamique.
Important
Le package est fourni avec la bibliothèque Microsoft .NET sous un modèle de licence propriétaire gratuit à utiliser.
Pour plus d’informations sur la couverture du code Microsoft, consultez sa page GitHub.
Options
| Choix | Descriptif |
|---|---|
--coverage |
Utilisez l'outil dotnet-coverage pour collecter la couverture de code. |
--coverage-output |
Nom ou chemin du fichier de couverture produit. Les chemins relatifs sont résolus à partir du répertoire des résultats de test. La valeur par défaut est <guid>.coverage dans ce répertoire. Consultez les fichiers de sortie de couverture. |
--coverage-output-format |
Format de fichier de sortie. Les valeurs prises en charge sont les suivantes : coverage, xmlet cobertura. La valeur par défaut est coverage. |
--coverage-settings |
Paramètres de couverture du code XML.. |
Pour plus d’informations sur les options disponibles, consultez settings et samples.
Note
La valeur par défaut de IncludeTestAssembly dans Microsoft.Testing.Extensions.CodeCoverage est false, au lieu de true dans VSTest. Cela signifie que les projets de test sont exclus par défaut. Pour plus d’informations, consultez Code Coverage configuration.
Fichiers de sortie de couverture
Pour conserver le rapport de couverture de chaque application dans une exécution multimodule dotnet test, omettez --coverage-output. L’extension génère un nom basé sur GUID pour chaque rapport et sélectionne l’extension de fichier à partir de --coverage-output-format:
dotnet test -- --coverage --coverage-output-format cobertura
Si vous spécifiez --coverage-output, dotnet test transfère la même valeur à chaque application de test. Un chemin relatif est résolu à partir du répertoire de résultats de cette application ; un chemin absolu est utilisé comme spécifié. L’option ne demande pas de rapport au niveau de la solution fusionnée.
Avertissement
Avec la disposition par défaut flat , les applications qui utilisent le même chemin de sortie remplacent les rapports de couverture des uns des autres, même si les applications s’exécutent en série. La commande de test peut réussir sans avertissement concernant la couverture perdue.
Pour conserver un nom de fichier relatif fixe sans collisions, utilisez l’option du Kit de --results-directory-layout per-module développement logiciel (SDK) avant --:
dotnet test --results-directory-layout per-module -- --coverage --coverage-output-format cobertura --coverage-output my-output-file.xml
Chaque application stocke my-output-file.xml sous son propre répertoire projet/framework/runtime. Un chemin absolu --coverage-output contourne ces répertoires. Pour séparer les rapports, utilisez un nom de fichier relatif ou un chemin absolu différent pour chaque application.
Les extensions de couverture compatibles peuvent fusionner les rapports conservés via le post-traitement des artefacts. Cette fonctionnalité est distincte de --coverage-output et ne peut pas restaurer les données remplacées avant la fusion.
Les espaces réservés de nom de fichier de rapport, tels que {asm}, {tfm}et {arch}, s’appliquent aux rapports de test, et non à --coverage-output.
Résumés et seuils de couverture
Important
Le modèle de résultat de couverture de première classe est disponible à partir de MTP 2.4.
Les collecteurs compatibles peuvent publier des mesures couvertes et pouvant être couvertes, des évaluations des seuils et des références de rapports de couverture sous la forme d’un unique résultat corrélé de couverture de test. Le reporteur terminal et les consommateurs de rapports compatibles affichent les mesures et dérivent des pourcentages sans analyser les fichiers spécifiques au collecteur.
Les collecteurs choisissent s’il faut publier ce modèle. Utilisez les options documentées du collecteur pour configurer la collecte et les seuils.
Si vous créez un collecteur, publiez TestCoverageMessage, TestCoverageThresholdMessage et TestCoverageReportMessage par le biais du bus de messages. Pour les contrats et les exemples exécutables, consultez Publier les résultats de la couverture du code. Pour les données corrélées dans une extension de rapport, utilisez les services ITestCoverageCapabilities et ITestCoverageResult.
Lorsqu’une évaluation de seuil publiée échoue, une exécution réussie s’arrête avec du code 14. Utilisez --ignore-exit-code 14 lorsque un échec de seuil ne doit pas entraîner l’échec du processus.
Compatibilité des versions
Le tableau suivant montre la compatibilité entre différentes versions de Microsoft. Testing.Extensions.CodeCoverage et MTP :
| Microsoft.Testing.Extensions.CodeCoverage | MTP |
|---|---|
| 18.1.x | 2.0.x |
| 18.0.x | 1.8.x |
| 17.14.x | 1.6.2 |
Note
Pour obtenir la meilleure compatibilité et les fonctionnalités les plus récentes, il est recommandé d’utiliser les dernières versions des deux packages ensemble.
Couvre-lit
Coverlet Microsoft Testing Platform Integration (coverlet.MTP) est une extension native pour MTP qui implémente la coverlet.collector fonctionnalité.
Ajoutez le package NuGet coverlet.MTP à votre project de test :
dotnet add package coverlet.MTP
Pour collecter la couverture du code, exécutez vos tests avec l’indicateur --coverlet :
dotnet test --coverlet
Ou exécutez votre exécutable de test avec l’indicateur --coverlet :
dotnet exec <test-assembly.dll> --coverlet
Après l’exécution du test, un coverage.json fichier contenant les résultats est généré dans le répertoire actif.
Options
| Choix | Descriptif |
|---|---|
--coverlet |
Activez la collecte de données de couverture du code. |
--coverlet-output-format <format> |
Formats de sortie pour le rapport de couverture. Formats pris en charge : json, , lcovopencover, cobertura, et teamcity. Indiquez plusieurs fois pour inclure davantage de formats. |
--coverlet-include <filter> |
Inclure des assemblages qui correspondent à des filtres, comme [Assembly]Type. Répétez l'opération plusieurs fois pour ajouter d’autres filtres. |
--coverlet-include-directory <path> |
Incluez des répertoires supplémentaires pour les fichiers sources. Spécifiez plusieurs fois pour ajouter de nouveaux répertoires. |
--coverlet-exclude <filter> |
Exclure des assemblies qui correspondent à des filtres, tels que [Assembly]Type. Répétez l'opération plusieurs fois pour ajouter d’autres filtres. |
--coverlet-exclude-by-file <pattern> |
Excluez les fichiers sources qui correspondent aux modèles glob. Répétez plusieurs fois la spécification pour ajouter davantage de motifs. |
--coverlet-exclude-by-attribute <attribute> |
Exclure des méthodes ou des classes décorées avec des attributs spécifiques. Répétez plusieurs fois la spécification pour ajouter des attributs supplémentaires. |
--coverlet-include-test-assembly |
Incluez l'assemblage de test dans le rapport de couverture. |
--coverlet-single-hit |
Limitez le nombre d'occurrences à un pour chaque emplacement dans le code. |
--coverlet-skip-auto-props |
Ignorez les propriétés implémentées automatiquement dans la couverture. |
--coverlet-does-not-return-attribute <attribute> |
Attributs qui marquent les méthodes comme ne retournant pas. Répétez plusieurs fois la spécification pour ajouter des attributs supplémentaires. |
--coverlet-exclude-assemblies-without-sources <value> |
Exclure des assemblys sans code source. Valeurs : MissingAll, MissingAnyet None. |
Pour plus d’informations, consultez la documentation coverlet.MTP.