dotnet tool install --global coverlet.console --version 6.0.0
dotnet test /p:CollectCoverage=true
Medir la cobertura de pruebas con Coverlet en .NET te permite saber qué tanto de tu código realmente estás validando con tus pruebas unitarias. Es una librería gratuita y open source que se integra con Visual Studio, la terminal y otras herramientas para entregar reportes claros sobre líneas, métodos y branches cubiertos.
Esto es clave si trabajas con xUnit, TDD o cualquier estrategia de pruebas en proyectos .NET, porque sin métricas reales no sabes si tus pruebas están protegiendo el código o solo dándote una falsa sensación de seguridad.
Qué librerías de Coverlet necesitas instalar
Coverlet no es una sola pieza, sino un conjunto de paquetes que cumplen funciones distintas. Si creaste tu proyecto con la plantilla de xUnit en Visual Studio, ya tienes una parte del trabajo hecho.
En el archivo de configuración del proyecto de pruebas vas a encontrar Coverlet.Collector preinstalado [0:55]. Si usaste Visual Studio Code u otra herramienta, basta con copiar esa referencia al archivo del proyecto o instalarla por CLI.
Las tres piezas que vas a usar son:
dotnet tool install [2:40].¿Por qué Coverlet.Console da error al instalarlo en el proyecto? Porque no es una librería de proyecto, es una herramienta global de la CLI de .NET. Debes instalarla en tu máquina con
dotnet tool install, no como NuGet del proyecto.
Cómo instalar Coverlet.Console como herramienta global
Entra a NuGet.org, busca Coverlet.Console y copia el comando que aparece en la sección de instalación. Lo ejecutas en la terminal de Visual Studio (View, Terminal) y, si ya estaba instalada, te mostrará un mensaje confirmándolo. Si no, verás el flujo de instalación hasta el mensaje de éxito.
Cómo ejecutar el comando de cobertura con dotnet test
Una vez tienes todo instalado, la ejecución es directa. Abres la terminal y corres:
bash dotnet test /p:CollectCoverage=true
Es el mismo dotnet test de siempre, pero con el parámetro CollectCoverage en true. Eso le indica a Coverlet que, además de correr las pruebas, calcule los porcentajes de cobertura y los muestre al final [4:30].
En el ejemplo de la clase, el resultado mostró 10 pruebas pasadas, una omitida y una tabla con los porcentajes de la clase StringManipulation.
¿Qué hace el parámetro CollectCoverage en dotnet test? Activa la recolección de métricas de Coverlet durante la ejecución de pruebas y devuelve una tabla con porcentajes de líneas, branches y métodos cubiertos.
Cómo interpretar los porcentajes de líneas, branches y métodos
El reporte de Coverlet entrega tres métricas distintas y cada una te dice algo diferente sobre la calidad de tus pruebas. En el ejemplo, StringManipulation arrojó 23,95% en líneas, 20% en branches y 60% en métodos [5:00].
A primera vista parecen métricas similares, pero miden cosas muy distintas:
Los métodos suelen mostrar porcentajes altos porque basta con una prueba básica para marcar un método como cubierto. Los branches, en cambio, son la métrica más estricta y la más importante.
Por qué los branches son la métrica más importante
Un método puede tener varios caminos posibles. Tomemos TruncateString como ejemplo: tiene un primer if, un segundo if y un return final. Eso significa tres flujos posibles dentro del mismo método [6:10].
Si solo pruebas uno de esos caminos, el método aparece como cubierto, pero los branches siguen bajos. La única forma de subir esa métrica es leer el código, identificar cada condición y escribir pruebas específicas para cada flujo.
Por eso, cuando trabajas con TDD o con cobertura como criterio de calidad, el porcentaje de branches es el que mejor refleja qué tan robustas son tus pruebas. Un 60% en métodos puede convivir con un 20% en branches, y eso significa que tu código tiene huecos lógicos sin validar.
Con Coverlet ya configurado y ejecutándose, el siguiente paso es jugar con sus parámetros de configuración para ver cómo cambian los reportes. ¿Has medido cobertura de branches en tus proyectos .NET? Cuéntame en los comentarios qué porcentaje manejas hoy.
Medir la cobertura de pruebas con Coverlet en .NET te permite saber qué tanto de tu código realmente estás validando con tus pruebas unitarias. Es una librería gratuita y open source que se integra con Visual Studio, la terminal y otras herramientas para entregar reportes claros sobre líneas, métodos y branches cubiertos.
Esto es clave si trabajas con xUnit, TDD o cualquier estrategia de pruebas en proyectos .NET, porque sin métricas reales no sabes si tus pruebas están protegiendo el código o solo dándote una falsa sensación de seguridad.
Coverlet no es una sola pieza, sino un conjunto de paquetes que cumplen funciones distintas. Si creaste tu proyecto con la plantilla de xUnit en Visual Studio, ya tienes una parte del trabajo hecho.
En el archivo de configuración del proyecto de pruebas vas a encontrar Coverlet.Collector preinstalado [0:55]. Si usaste Visual Studio Code u otra herramienta, basta con copiar esa referencia al archivo del proyecto o instalarla por CLI.
Las tres piezas que vas a usar son:
dotnet tool install [2:40].¿Por qué Coverlet.Console da error al instalarlo en el proyecto? Porque no es una librería de proyecto, es una herramienta global de la CLI de .NET. Debes instalarla en tu máquina con
dotnet tool install, no como NuGet del proyecto.
Entra a NuGet.org, busca Coverlet.Console y copia el comando que aparece en la sección de instalación. Lo ejecutas en la terminal de Visual Studio (View, Terminal) y, si ya estaba instalada, te mostrará un mensaje confirmándolo. Si no, verás el flujo de instalación hasta el mensaje de éxito.
Una vez tienes todo instalado, la ejecución es directa. Abres la terminal y corres:
bash dotnet test /p:CollectCoverage=true
Es el mismo dotnet test de siempre, pero con el parámetro CollectCoverage en true. Eso le indica a Coverlet que, además de correr las pruebas, calcule los porcentajes de cobertura y los muestre al final [4:30].
En el ejemplo de la clase, el resultado mostró 10 pruebas pasadas, una omitida y una tabla con los porcentajes de la clase StringManipulation.
¿Qué hace el parámetro CollectCoverage en dotnet test? Activa la recolección de métricas de Coverlet durante la ejecución de pruebas y devuelve una tabla con porcentajes de líneas, branches y métodos cubiertos.
El reporte de Coverlet entrega tres métricas distintas y cada una te dice algo diferente sobre la calidad de tus pruebas. En el ejemplo, StringManipulation arrojó 23,95% en líneas, 20% en branches y 60% en métodos [5:00].
A primera vista parecen métricas similares, pero miden cosas muy distintas:
Los métodos suelen mostrar porcentajes altos porque basta con una prueba básica para marcar un método como cubierto. Los branches, en cambio, son la métrica más estricta y la más importante.
Un método puede tener varios caminos posibles. Tomemos TruncateString como ejemplo: tiene un primer if, un segundo if y un return final. Eso significa tres flujos posibles dentro del mismo método [6:10].
Si solo pruebas uno de esos caminos, el método aparece como cubierto, pero los branches siguen bajos. La única forma de subir esa métrica es leer el código, identificar cada condición y escribir pruebas específicas para cada flujo.
Por eso, cuando trabajas con TDD o con cobertura como criterio de calidad, el porcentaje de branches es el que mejor refleja qué tan robustas son tus pruebas. Un 60% en métodos puede convivir con un 20% en branches, y eso significa que tu código tiene huecos lógicos sin validar.
Con Coverlet ya configurado y ejecutándose, el siguiente paso es jugar con sus parámetros de configuración para ver cómo cambian los reportes. ¿Has medido cobertura de branches en tus proyectos .NET? Cuéntame en los comentarios qué porcentaje manejas hoy.
dotnet tool install --global coverlet.console --version 6.0.0
dotnet test /p:CollectCoverage=true
A mi no me mostraba los porcentajes, pero era por problemas del paquete coverlet.msbuild entonces lo actualice y reinicie visual estudio y me funciono.
Código para instalar coverlet console actualizado
dotnet tool install --global coverlet.console --version 6.0.4
(ya que el de la página no me sirvió)
y si no les aparecen los porcentajes de la prueba con
dotnet test /p:CollectCoverage=true
tienen que hacer un cd StringManipulation.Test para ubicarse en la carpeta de los test
Guía para Coverlet en Visual Studio 2022
Esta guía te ayudará a configurar y utilizar Coverlet en un proyecto de pruebas en Visual Studio 2022. Coverlet es una herramienta para medir la cobertura de código en proyectos .NET.
Si tienes problemas para ver las tablas de cobertura, es importante asegurarte de que todas las versiones de Coverlet estén actualizadas.
Lo primero que debemos hacer es revisar la configuración del proyecto y asegurarnos de que estamos en la versión correcta de .NET.
Si creaste tu proyecto de pruebas en Visual Studio 2022 y no se agregaron automáticamente las líneas de código necesarias, sigue estos pasos para configurarlo correctamente.
Abre la terminal en la carpeta del proyecto de pruebas (StringManipulation.Test).
Si la terminal no se abre directamente en esta carpeta, navega manualmente con los siguientes comandos:shCopiarEditarcd ..
cd StringManipulation.Test
Importante: Asegúrate de estar en la carpeta correcta antes de continuar. Si no estás en el folder adecuado, las tablas de cobertura no se mostrarán correctamente.
Paso 3: Agregar las librerías necesarias
Una vez dentro de la carpeta del proyecto de pruebas, instala los paquetes necesarios ejecutando los siguientes comandos:
shCopiarEditardotnet add package coverlet.msbuild dotnet add package coverlet.collector
Después de instalar las librerías, verifica en el explorador de dependencias dentro del proyecto StringManipulation.Test que los paquetes han sido agregados correctamente.
Coverlet no funciona como un paquete de proyecto común, sino como una herramienta de CLI de .NET. Para instalarlo correctamente:
Ve a la página oficial de NuGet: 👉
Busca coverlet.console
Instala la herramienta globalmente con el siguiente comando en la terminal:shCopiarEditardotnet tool install --global coverlet.console --version 6.0.4
Esta herramienta se instala de manera global, por lo que no importa desde qué carpeta la ejecutes.
Compila el proyecto con:shCopiarEditardotnet build
Ejecuta las pruebas midiendo la cobertura de código con:shCopiarEditardotnet test /p:CollectCoverage=true
Después de ejecutar las pruebas, Coverlet mostrará una tabla con los porcentajes de cobertura, similar a la siguiente:

Esto indica la cantidad de código que ha sido cubierto por las pruebas.
✔️ Mantén Coverlet actualizado: Si tienes versiones diferentes, es posible que no se muestren correctamente las tablas de cobertura.
✔️ Verifica que los paquetes estén instalados correctamente en la carpeta de pruebas (StringManipulation.Test).
✔️ Si algo no funciona, revisa la versión de .NET que estás utilizando y asegúrate de que tu terminal esté en la carpeta correcta.
Coverlet es una herramienta de código abierto utilizada para medir la cobertura de pruebas en proyectos escritos en C#. Es una herramienta popular en el ecosistema de desarrollo de C# y se integra fácilmente con las pruebas unitarias y las tuberías de construcción (build pipelines) para proporcionar informes detallados sobre la cobertura de pruebas.
En mi caso, solamente generaba las pruebas y no me mostraba los porcentajes, la solución que me sirvió fue ejecutar con la ruta del proyecto de pruebas directamente:
dotnet test ../StringManipulation.Test/StringManipulation.Test.csproj /p:CollectCoverage=true
Yo lo estoy haciendo desde VS2022 pero me sale lo siguiente:
C:\Git\curso-unit-testing-csharp\StringManipulation>dotnet test /p:CollectCoverage=true
Restore complete (0,3s)
You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy
StringManipulation succeeded (0,2s) → bin\Debug\net7.0\StringManipulation.dll
StringManipulationTests succeeded (0,1s) → C:\Git\curso-unit-testing-csharp\StringManipulationTests\bin\Debug\net8.0\StringManipulationTests.dll
StringManipulationTests test succeeded (0,7s)
Build succeeded in 1,3s
Test run succeeded. Total: 20 Failed: 0 Passed: 20 Skipped: 0, Duration: 0,5s
C:\Git\curso-unit-testing-csharp\StringManipulation>
```no veo el % de Coverage
He instalado todo correctamente, pero estoy recibiendo el siguiente error:
No se reconoce el comando o el argumento "/p:CollectCoverage=true"
Para generar los archivos XML y HTML con los resultados de cobertura de pruebas en un proyecto .NET, necesitarás ejecutar dos comandos:
1. Primero, para generar el reporte de cobertura en formato XML:
dotnet test --collect:"XPlat Code Coverage"
2. Luego, para convertir el reporte XML a HTML usando reportgenerator:
dotnet reportgenerator -reports:"./TestResults/**/coverage.cobertura.xml" -targetdir:"coveragereport" -reporttypes:Html
Nota: Antes de ejecutar estos comandos, asegúrate de tener instalada la herramienta ReportGenerator globalmente. Si no la tienes, puedes instalarla con:
dotnet tool install -g dotnet-reportgenerator-globaltool
Una vez ejecutados estos comandos:
• El archivo XML se generará en la carpeta TestResults
• El reporte HTML se generará en la carpeta coveragereport
Podrás abrir el archivo index.html en tu navegador para ver el reporte de cobertura de manera visual y detallada.
Me rindo, hice de todo y no pude generar el reporte con los gráficos en el CLI