Azure Devops y cobertura de pruebas unitarias (NetCore)


La cobertura de pruebas unitarias cobra mucha importancia ya que nos ayuda a determinar la efectividad de nuestras pruebas y si hemos olvidado algo al crearlas.

En C# podemos usar Coverlet para generar un reporte de la cobertura y leer fácilmente los resultados para detectar esos módulos sin pruebas o que aquellos que necesiten más.

En este paso a paso veremos como incluir la cobertura en Azure devops:

  1. Agregar una tarea a tu pipeline de netcore para correr las pruebas incluyendo la cobertura en los parámetros. “/p:CollectCoverage=true /p:CoverletOutputFormat=cobertura” representan los parámetros de Coverlet para obtener la cobertura. Debes tener instalado el nuget de Coverlet en tu proyecto. (https://dev.to/mteheran/coverlet-unit-tests-coverage-for-net-4954)
#Ejemplo archivo YAML

steps:
- task: DotNetCoreCLI@2
  displayName: 'Test - Coverlet'
  inputs:
    command: test
    projects: '**/*[Tt]est/*.csproj'
    arguments: '--configuration $(BuildConfiguration) --no-build  /p:CollectCoverage=true  /p:CoverletOutputFormat=cobertura'
  continueOnError: true

2. Agregar ReportGenerator para que a partir de los resultados de la cobertura generar un reporte. ReportGenerator debe instalarse como una extensión por que no viene por defecto en Azure devops.

#Ejemplo archivo YAML
steps:
- task: Palmmedia.reportgenerator.reportgenerator-build-release-task.reportgenerator@4
  displayName: ReportGenerator
  inputs:
    reports: '**/coverage.cobertura.xml'
    targetdir: ' $(build.artifactstagingdirectory)/'
    reporttypes: 'HtmlInline_AzurePipelines;Cobertura;Badges'

3. Publica el reporte para poder visualizarlo luego de que todos las tasks del pipeline se ejecuten

#Ejemplo archivo YAML
steps:
- task: PublishCodeCoverageResults@1
  displayName: 'Publish code coverage from  $(build.artifactstagingdirectory)/cobertura.xml'
  inputs:
    codeCoverageTool: Cobertura
    summaryFileLocation: ' $(build.artifactstagingdirectory)/cobertura.xml'
    reportDirectory: ' $(build.artifactstagingdirectory)/'

4. Si todos los pasos funcionan correctamente, ahora puedes visualizar un nuevo tab en el resultado de la ejecución que dice “Code coverage”, en este se presentará el reporte de cobertura.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s