test golang coverage unit-testing testing go code-coverage

unit-testing - coverage - golang test assertions



¿Cómo medir la cobertura del código en Golang? (7)

Cobertura de prueba para Golang

go get github.com/axw/gocov/gocov go get -u gopkg.in/matm/v1/gocov-html

Comprueba que está instalado correctamente y que tienes acceso desde tu terminal

Ejecute el caso de prueba

Si ejecuta el caso de prueba Reder el archivo .json Basado en el archivo obtendrá el Informe de cobertura del código en el archivo .html

gocov test >your_Coverage_report.json

Una vez que finalice su prueba, genere un informe en archivo .html usando .json

gocov-html your_Coverage_report.json >your_Coverage_report.html

Referencia

Herramienta de cobertura GoTest para go lang

Ir a la herramienta de informe de prueba

Metodo alternativo

Ir a la cobertura de prueba nativa

go test -coverprofile=coverage.out go tool cover -html=coverage.out

¿Alguien ha tenido éxito en la generación de cobertura de código para las pruebas de unidad Go? No puedo encontrar una herramienta para eso en la web.


Está here , algunos documentos here .

$ go tool 6a 6c 6g 6l addr2line api cgo cov dist ebnflint fix gotype nm objdump pack pprof prof vet yacc $ go tool cov -h usage: cov [-lsv] [-g substring] [-m minlines] [6.out args...] -g specifies pattern of interesting functions or files go tool cov: exit status 1 $

No lo he usado, esto es todo lo que sé.


Go viene con una increíble herramienta para pruebas y cobertura. Aunque todas las herramientas de Go están bien documentadas, go tool cover -help Sugerir 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. (Puedes pegarlo en la terminal para intentarlo).

cover () { t="/tmp/go-cover.$$.tmp" go test -coverprofile=$t $@ && go tool cover -html=$t && unlink $t }

A continuación, simplemente cd en una carpeta de proyecto / paquete 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. ¡Un comando muy útil! ¡Lo recomiendo encarecidamente para encontrar lo que aún no ha sido probado al 100%! 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 puede verificar la cobertura de cualquier paquete, por ejemplo:

cover fmt

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

ok fmt 0.031s coverage: 91.9% of statements

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

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


Inspirado por los menús de ayuda y otras respuestas a esta pregunta, solo ejecuta:

f=cover.out; if [ -f $f ]; then rm $f; fi; go test -coverprofile $f && go tool cover -html $f


Intenta usar gaia-docker/base-go-build Docker Image.

Esta es la imagen de Docker que contiene todo lo que necesita para construir y probar la cobertura. La ejecución de la cobertura de prueba dentro de un contenedor Docker crea una carpeta .cover con resultados de cobertura de prueba de su proyecto.

docker run --rm -v "$PWD":$PROJECT_PATH -w $PROJECT_PATH $BUILDER_IMAGE_NAME /go/script/coverage.sh

La secuencia de comandos de cobertura de prueba que se ejecuta en todas las carpetas de proyectos y genera, dentro de la carpeta .cover, informes de cobertura y junit para cada carpeta y un informe de cobertura combinada de todas las pruebas de proyectos.


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

Una nueva característica importante de la go test es que ahora puede calcularse y, con la ayuda de un nuevo programa de " go tool cover " instalado por separado, muestra los resultados de la cobertura de prueba .

La herramienta de cover es parte del go.tools go.tools . Se puede instalar ejecutando

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

La herramienta de portada hace dos cosas.

  • En primer lugar, cuando " go test " recibe el indicador -cover , se ejecuta automáticamente para reescribir el origen del paquete e insertar instrucciones de instrumentación. La prueba se compila y ejecuta como de costumbre, y se informan las estadísticas básicas de cobertura:

$ go test -coverprofile fmt ok fmt 0.060s coverage: 91.4% of statements $

En segundo lugar, para obtener informes más detallados, diferentes indicadores para "ir a prueba" pueden crear un archivo de perfil de cobertura, que el programa de cobertura, invocado con " go tool cover ", puede analizar.

Frank Shearar menciona :

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

go test -coverprofile <filename> <package name>

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 -o cover.html opens cover.html en el navegador

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

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

Solo gc y tengo una lista de todas las líneas que aún no están cubiertas (aquí: con una línea de coverage.out que no termina con " 1 ").


Una forma rápida y fácil es usar la herramienta de cobertura que viene con go integrado:

$ go test -coverprofile cp.out // Emite la cobertura en un porcentaje de línea sabio

Después de ejecutar el comando anterior, si desea ver visualmente la cobertura del código (como declaraciones cubiertas y omitidas, etc.)

$ go tool cover -html = cp.out

Nota: debe ejecutar los comandos anteriores en la carpeta donde desea ver la cobertura