Partager via


Couverture du code

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 pour déterminer la proportion du code de votre project 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 expédié avec la bibliothèque Microsoft .NET avec 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. Par défaut, le fichier est TestResults/<guid>.coverage.
--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.

Compatibilité des versions

Le tableau suivant montre la compatibilité entre différentes versions de Microsoft.Testing.Extensions.CodeCoverage et Microsoft.Testing.Platform :

Microsoft.Testing.Extensions.CodeCoverage Microsoft.Testing.Platform
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 Microsoft.Testing.Platform qui implémente des coverlet.collector fonctionnalités.

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.