Introducción

El code coverage (cobertura de código) es una métrica que indica qué porcentaje de tu código es ejecutado durante los tests. Go también tiene herramientas integradas para calcular la cobertura.

1. Medir cobertura básica de paquetes

El comando:

go test -cover
ok  	tailscale.com/appc	0.012s	coverage: 83.5% of statements
ok  	tailscale.com/atomicfile	0.005s	coverage: 14.3% of statements
ok  	tailscale.com/chirp	0.508s	coverage: 78.0% of statements

Ejecuta todas las pruebas en el proyecto y muestra un porcentaje de cobertura para cada paquete.

2. Analizar funciones

Para mostrar un análisis basado en funciones:

go test -coverprofile=cov.out && go tool cover -func=cov.out
tailscale.com/envknob/envknob.go:175:   RegisterDuration 0.0%
tailscale.com/envknob/envknob.go:194:	RegisterInt	0.0%
tailscale.com/envknob/envknob.go:211:	setBoolLocked 50.0%
tailscale.com/envknob/envknob.go:225:	setOptBoolLocked 50.0%
tailscale.com/envknob/envknob.go:239:	setDurationLocked 0.0%
tailscale.com/envknob/envknob.go:253:	setIntLocked 0.0%
tailscale.com/envknob/envknob.go:269:	Bool 100.0%
tailscale.com/envknob/envknob.go:275:	BoolDefaultTrue 0.0%
tailscale.com/envknob/envknob.go:279:	boolOr 40.0%

3. Generar HTML

También es posible generar un documento HTML que muestra en verde las líneas de código que están cubiertas y en rojo, las líneas que no se han probado.

go test -coverprofile=cov.out && go tool cover -html=cov.out