Azure DevOps - Code coverage facile
Dans tous les projets que vous développez en .NETCore, il est indispensable d’y ajouter un projet de tests :-) Et il devient alors très simple de compléter ce projet par une procédure de calcul de couverture de code. On demandera ainsi aux développeurs de créer des procédures de tests qui passent par l’ensemble des branches de votre code source. Un taux d’au moins 80% de couverture de code est très souvent recommandé.
Depuis Visual Studio
Depuis Visual Studio ou via une ligne de commande, vous pouvez calculer la couverture de code en utilisant ces instructions :
-
Installez le package NuGet Coverlet.MSBuild, à votre projet de test. Il est utilisé par le compilateur pour permettre de générer le fichier de Coverage via la commande
dotnet test
. -
Installez ces deux outils, depuis Nuget.org, afin de disposer des commandes de génération et de formatage des fichiers HTML de couverture de code.
dotnet tool install --global coverlet.console dotnet tool install --global dotnet-reportgenerator-globaltool
-
Ajoutez le fichier cmd suivant à votre projet et exécutez le quand vous le souhaitez.
echo off REM 1. Install Coverlet.MSBuild Nuget Package in the project. REM REM 2. Install tools: REM $:\> dotnet tool install --global coverlet.console REM $:\> dotnet tool install --global dotnet-reportgenerator-globaltool REM REM Use this command to list existing installed tools: REM $:\> dotnet tool list --global echo on cls dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura reportgenerator "-reports:coverage.cobertura.xml" "-targetdir:C:\Temp\Coverage" -reporttypes:HtmlInline_AzurePipelines start "" "C:\Temp\Coverage\index.htm"
Depuis Azure DevOps
Dans votre Build Definition, ajoutez ces trois étapes :
-
Test and Code Coverage exécute la commande
dotnet test
en précisant de compiler le code avec les fichiers PDB ainsi que le fichier résumécoverage.cobertura.xml
contenant les informations sur la couverture de code. -
Generate reports transforme le fichier xml précédent en une série de documents HTML facilement lisibles.
-
Publish code coverage se charge de publier le fichier résumé (xml) et tous les fichiers HTML vers le serveur Azure DevOps.
Chaque développeur peut ainsi exécuter la couverture de code localement, mais également la consulter depuis Azure DevOps, en cliquand sur l’onglet Code Coverage.
# Test (including PDB) and generate Code Coverage
- task: DotNetCoreCLI@2
displayName: 'Test and Code Coverage'
inputs:
command: test
projects: '**/*[Tt]ests/*.csproj'
arguments: '--configuration $(BuildConfiguration) /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:DebugType=Full'
publishTestResults: true
# Coverage Generation
- task: reportgenerator@4
displayName: Generate reports
inputs:
reports: '**/coverage.cobertura.xml'
targetdir: 'CoverageTrotting'
reporttypes: 'HtmlInline_AzurePipelines'
# Publish code coverage
- task: PublishCodeCoverageResults@1
displayName: 'Publish code coverage'
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '**/coverage.cobertura.xml'
reportDirectory: CoverageTrotting