Coverlet, cobertura de pruebas unitarias para .NET

Medir la covertura de las pruebas unitarias en nuestro código es un tema muy importante pues nos permite saber que tan bien estamos diseñando las pruebas y el alcance que estas tienen en los flujos que puede tener un método o rutina.

Coverlet  es una excelente herramieta para este trabajo y nos minimiza todo el proceso a solo unos cuantos comandos.

Coverlet es un proyecto completamente Opensource que soporta .NET Framework y támbien .NET Core. Pueden revisar el repositorio oficial en github https://github.com/tonerdo/coverlet

Para comenzar con Coverlet debemos instalar el NuGet en nuestro proyecto. Coverlet tienes varias formas de ser usada pero yo sugiero implementar la integración  con MSBuild ya que es mucho mas fácil.

Para ello debes usar el siguiente comando:

dotnet add package coverlet.msbuild

Una vez agregamos el NuGet podemos utilizar la integración con MSBuild para ejecutar las pruebas y también el cubrimiento.  El comando para la ejecución  de pruebas en netcore es dotnet test vamos agregar a este comando el parametro CollectetCoverage=true

dotnet test /p:CollectCoverage=true

Obtendremos un resultado parecido al siguiente:

Screen Shot 2019-09-09 at 9.57.20 PM.png

Interpretamos el resultado de la siguiente manera:

En la primera sección identificamos los modulos que hacen parte del set de pruebas y que al final representan los namespaces y en el segundo un total y un promedio de todos los módulos.

En el detalle tenemos Line porcentaje de líneas de código cubiertas por las pruebas unitarias, Branch se refiere al número de sentencias o declaraciones cubiertas es decir condicionales, ciclos, etc… y Method Porcentaje de métodos cubiertos.

Coverlet genera un archivo coverage.json con la información que aparece en pantalla para consumirlo por alguna aplicación externa si así  lo queremos.

En resumen Coverlet nos ayuda a medir la covertura de una manera sencilla en nuestro proyecto algo que aveces se complica o en el que debemos usar herramientas de pago externas.