Saltar al contenido

¿Cómo medir la cobertura de código en Golang?

Posteriormente a buscar en varios repositorios y sitios de internet finalmente hallamos la solución que te compartiremos a continuación.

Solución:

Tenga en cuenta que Go 1.2 (Q4 2013, rc1 está disponible) ahora se mostrará resultados de cobertura de prueba:

Una de las principales novedades de go test es eso ahora puede calcular y, con la ayuda de un nuevo, instalado por separado “go tool cover” programa, mostrar resultados de cobertura de prueba.

los cover herramienta es parte de la go.tools subrepositorio Se puede instalar ejecutando

$ go get golang.org/x/tools/cmd/cover

La herramienta de portada hace dos cosas.

  • Primero, cuando “go test“se le da la -cover flag, se ejecuta automáticamente para reescribir el código fuente del paquete e insertar sentencias de instrumentación. Luego, la prueba se compila y ejecuta como de costumbre, y se informan las estadísticas básicas de cobertura:
$ go test -coverprofile fmtcoverage.html fmt
ok      fmt 0.060s  coverage: 91.4% of statements
$

En segundo lugar, para informes más detallados, diferentes banderas para “ir a prueba” pueden crear un archivo de perfil de cobertura, que el programa de cobertura invocó con “go tool cover“, puede entonces analizar.

Frank Shearar menciona:

Las últimas versiones de Go (2013/09/19) usan:

go test -coverprofile  

Los detalles sobre cómo generar y analizar estadísticas de cobertura se pueden encontrar ejecutando los comandos

$ go help testflag
$ go tool cover -help

Ivan Black menciona en los comentarios:

go test -coverprofile cover.out y luego
go tool cover -html=cover.out abre cover.out en tu navegador predeterminado

Ni siquiera quiero esperar a que se abra el navegador, así que definí este alias:

alias gc=grep -v -e " 1$" cover.out

que acabo de escribir gcy tener una lista de todas las líneas no aún cubierto (aquí: con un coverage.out línea no terminando con ” 1“).

Go viene con una herramienta increíble para pruebas y cobertura. Aunque todas las herramientas de Go están bien documentadas go tool cover -help Sugeriría leer el artículo de portada en el blog oficial de Go. ¡Tiene muchos ejemplos y lo recomiendo encarecidamente!

Tengo esta función en mi ~/.bash_profile. (puede simplemente pegarlo en la terminal para probarlo).

cover ()  
    t="/tmp/go-cover.$$.tmp"
    go test -coverprofile=$t [email protected] && go tool cover -html=$t && unlink $t

entonces solo cd en una carpeta go project/package y escriba cover. Esto abre una herramienta visual en el navegador que le muestra el código probado y no probado para cada archivo en el paquete actual. ¡Comando muy útil! ¡Lo recomiendo encarecidamente para encontrar lo que aún no está 100% probado! Los resultados mostrados son por archivo. Desde un menú desplegable en la parte superior izquierda, puede ver los resultados de todos los archivos.

Con este comando también puedes consultar la cobertura de cualquier paquete por ejemplo:

cover fmt

La salida en la terminal de este comando sería:

ok      fmt 0.031s  coverage: 91.9% of statements

Además en tu navegador verás esta herramienta mostrando en rojo todas las líneas de código que no están cubiertas con pruebas:

ingrese la descripción de la imagen aquí

También es posible simplemente guardar el archivo de cobertura html en lugar de abrirlo en un navegador. Esto es muy útil en los casos en que sus pruebas + cobertura se ejecutan con una herramienta de CI como Jenkins. De esa manera, puede servir los archivos de cobertura desde un servidor central y todo el equipo podrá ver los resultados de cobertura para cada compilación.

Además de las buenas respuestas anteriores, creo que estas tres líneas son la forma más sencilla de obtenerlo (que incluye todos los paquetes):

go test -v -coverprofile cover.out ./YOUR_CODE_FOLDER/...
go tool cover -html=cover.out -o cover.html
open cover.html

Tenga en cuenta que en el archivo HTML encontrará un botón desplegable que lo dirigirá a todos los archivos.

Aquí puedes ver las comentarios y valoraciones de los usuarios

Si crees que ha resultado de utilidad este artículo, agradeceríamos que lo compartas con otros programadores así contrubuyes a difundir este contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *