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 delgo.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
openscover.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