English
Français

Blog of Denis VOITURON

for a better .NET world

Azure DevOps - Code coverage facile

Posted on 2020-11-06

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 :

  1. 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.

  2. 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
    
  3. 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 :

  1. 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.

  2. Generate reports transforme le fichier xml précédent en une série de documents HTML facilement lisibles.

  3. 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.

    Coverage 1

    Coverage 2

# 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

Langues

EnglishEnglish
FrenchFrançais

Suivez-moi

Articles récents