Cobertura del código: cómo mejorar la calidad de las pruebas

Nuestro colega, Scott Hanselman, continúa estudiando pruebas y cobertura de código en .NET Core. Ya ha logrado hablar sobre algunas herramientas para mejorar la calidad de las pruebas, y hoy habla sobre una cosa más: AltCover . ¡Mira debajo del gato!



Le paso la palabra a Scott Hanselman .

A principios de esta semana revisé la colcha . También hay una herramienta OpenCover muy respetada y varios proyectos interesantes que intentan que OpenCover funcione con .NET Core, pero solo en Windows.

Hoy estudiaré AltCover Steve Gilham. Existen herramientas de detección de cobertura que utilizan la API de creación de perfiles .NET en tiempo de ejecución. AltCover, por el contrario, se refiere a IL para esto .

Como su nombre indica, este es un enfoque alternativo para la cobertura. En lugar de trabajar a través de la API de creación de perfiles .NET en tiempo de ejecución, agrega la misma IL adicional a lo que queremos construir, incluso antes de la ejecución. Esto significa que debería funcionar en casi todas partes, en cualquier plataforma, siempre que el proceso de ejecución tenga acceso para modificar el archivo de resultados. Puede combinar las diversas plataformas utilizadas para la instrumentación y las que se prueban.

AltCover no solo es parte del paquete NuGet, sino que también está disponible como parte de .NET Core Global Tool, lo cual es genial.

dotnet tool install --global altcover.global 

Esto le permite usar el comando altcover en cualquier lugar sin agregarlo al proyecto.

Aún así, voy a revisar la guía de configuración rápida de AltCover y ver qué tan rápido puedo hacerlo.

Lo instalaré en mi proyecto de prueba hanselminutes.core.tests,

 dotnet add package AltCover 

y luego lo lanzaré.

 dotnet test /p:AltCover=true 

Genial Mis pruebas se ejecutan como de costumbre, pero ahora tengo el archivo test.xml en la carpeta de prueba. Si lo desea, también podría generar informes LCov o Cobertura. ¡El archivo coverage.xml ya pesa casi medio megabyte! Tiene mucha información útil, pero ¿cómo puedo ver los resultados en un formato legible?



El archivo está en formato XML OpenCover, por lo que puedo ejecutar ReportGenerator para el archivo de cobertura y obtener una gran cantidad de archivos HTML. De hecho, ¡todo un sitio de mini cobertura!

Descargué ReportGenerator y lo puse en una carpeta separada (esta es la mejor solución para .NET Core Global Tool).

 c:\ReportGenerator\ReportGenerator.exe -reports:coverage.xml -targetdir:./coverage 

Asegúrese de utilizar un buen targetDir, de lo contrario obtendrá decenas de archivos HTML innecesarios en la carpeta del proyecto. También vale la pena considerar configurar .gitignoring para la carpeta resultante y el archivo de cobertura. ¡Abra index.htm y califique toda esta información útil!



¡Echa un vistazo a los puntos críticos de riesgo arriba! Tengo un CustomPageHandler con una complejidad NPath significativa y dos vistas con una complejidad ciclomática significativa.

También evalúe la excelente cobertura de seguimiento como se indica aquí en los resultados del informe de cobertura. Puede notar que EnableAutoLinks siempre ha sido cierto, por lo que lo verifiqué solo de una manera. Quizás haré una prueba negativa aquí y veré si hay algún efecto secundario si EnableAutoLinks es falso.



Lea el tutorial completo de AltCover . ¡Hay muchas maneras de ejecutar esta herramienta, desde herramientas globales, herramientas globales, pruebas de dotnet, tareas de MSBuild hasta integración con PowerShell!

  • Para ejemplos de uso, haga clic aquí .
  • Para ver los modos de funcionamiento, haga clic aquí .
  • Para ejecutar AltCover desde la prueba dotnet, vaya a la integración de prueba dotnet.
  • Para ejecutar AltCover desde MSBuild, vaya aquí .
  • Para iniciar AltCover y sus herramientas relacionadas de Windows PowerShell o PowerShell Core, vaya aquí .

Aquí hay muchos buenos ejemplos, y me llevó literalmente 10 minutos obtener un excelente informe de cobertura con AltCover y .NET Core. ¡Gracias a Steve de AltCover! ¡Visite github.com/SteveGilham/altcover para darle un asterisco, informar problemas de archivos u ofrecer ayuda! Y lo más importante, comparta proyectos de código abierto como este con amigos y colegas.

Source: https://habr.com/ru/post/es418517/


All Articles