Notre collègue, Scott Hanselman, continue d'étudier les tests et la couverture de code dans .NET Core. Il a déjà réussi à parler de quelques outils pour améliorer la qualité des tests, et aujourd'hui il parle d'une
chose :
AltCover . Regardez sous le chat!
Je passe la parole à Scott Hanselman .
Plus tôt cette semaine, j'ai examiné la couverture . Il existe également un outil OpenCover très respecté et plusieurs projets intéressants qui tentent de faire fonctionner OpenCover avec .NET Core, mais uniquement sous Windows.
Aujourd'hui, j'étudierai AltCover Steve Gilham. Il existe des outils de détection de couverture qui utilisent l'API de profilage .NET lors de l'exécution. AltCover, en revanche, se réfère à IL pour cela .
Comme son nom l'indique, il s'agit d'une approche alternative à la couverture. Au lieu de travailler via l'API de profilage .NET au moment de l'exécution, il ajoute le même IL supplémentaire à ce que nous voulons créer, même avant l'exécution. Cela signifie qu'il devrait fonctionner presque partout, sur n'importe quelle plate-forme, tant que le processus d'exécution a accès pour modifier le fichier de résultat. Vous pouvez combiner les différentes plateformes utilisées pour l'instrumentation et celles testées.
AltCover ne fait pas seulement partie du package NuGet, mais est également disponible dans le cadre de l'outil global .NET Core, ce qui est tout simplement génial.
dotnet tool install --global altcover.global
Cela vous permet d'utiliser la commande altcover n'importe où sans l'ajouter au projet.
Pourtant, je vais parcourir
le guide de configuration rapide AltCover et voir à quelle vitesse je peux le faire!
Je vais l'installer dans mon projet de test hanselminutes.core.tests,
dotnet add package AltCover
puis je vais le lancer.
dotnet test /p:AltCover=true
Super. Mes tests se déroulent comme d'habitude, mais j'ai maintenant le fichier test.xml dans le dossier de test. Si vous le souhaitez, je pourrais également générer des rapports LCov ou Cobertura. Déjà, le fichier coverage.xml pèse près d'un demi-mégaoctet! Il contient de nombreuses informations utiles, mais comment puis-je voir les résultats sous une forme lisible?

Le fichier est au format OpenCover XML, je peux donc exécuter
ReportGenerator pour le fichier de couverture et obtenir un tas de fichiers HTML. En fait, tout un mini site de couverture!
J'ai téléchargé ReportGenerator et l'ai placé dans un dossier séparé (c'est la meilleure solution pour l'outil global .NET Core).
c:\ReportGenerator\ReportGenerator.exe -reports:coverage.xml -targetdir:./coverage
Assurez-vous d'utiliser un bon targetDir, sinon vous obtiendrez des dizaines de fichiers HTML inutiles dans le dossier du projet. Il est également utile d'envisager de configurer .gitignoring pour le dossier et le fichier de couverture obtenus. Ouvrez index.htm et notez toutes ces informations utiles!

Découvrez les points chauds de risque ci-dessus! J'ai un CustomPageHandler avec une
complexité NPath significative et deux vues avec une
complexité cyclomatique significative.
Évaluez également l'excellente couverture des pistes, comme indiqué ici dans les résultats du rapport de couverture. Vous remarquerez peut-être que EnableAutoLinks a toujours été vrai, donc je n'ai vérifié que dans un sens. Je vais peut-être exécuter un test négatif ici et voir s'il y a des effets secondaires si EnableAutoLinks est faux.
Lisez le didacticiel AltCover complet . Il existe de nombreuses façons d'exécuter cet outil, des outils globaux Outils globaux, tests dotnet, tâches MSBuild à l'intégration avec PowerShell!
- Pour des exemples d'utilisation, cliquez ici .
- Pour visualiser les modes de fonctionnement, cliquez ici .
- Pour exécuter AltCover à partir du test dotnet, accédez à l'intégration du test dotnet.
- Pour exécuter AltCover à partir de MSBuild, cliquez ici .
- Pour lancer AltCover et ses outils Windows PowerShell ou PowerShell Core associés, cliquez ici .
Il y a tellement de bons exemples ici, et il m'a fallu littéralement 10 minutes pour obtenir un excellent rapport de couverture avec AltCover et .NET Core. Merci à Steve d'AltCover! Visitez
github.com/SteveGilham/altcover pour lui donner un astérisque, signaler des problèmes de fichier ou lui offrir de l'aide! Et surtout, partagez des projets open source comme celui-ci avec vos amis et collègues.