No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Code coverage

18/30
Recursos

Aportes 12

Preguntas 5

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

鉁 Mini resumen

Ejecutar los test con la bandera -coverprofile=coverage.out para obtener un coverage. Esto nos permite saber que parte del c贸digo hemos testeado y cual no:

$ go test -coverprofile=coverage.out

Para tener las metricas legibles del resultado del coverage usamos:

 // ver resumen resumen en la terminal
$ go tool cover -func=coverage.out
// o ver resumen en el navegador
$ go tool cover -html=coverage.out  

En Windows, cualquier comando con un flag que lleve un par clave/valor se debe colocar el doble guion:

--coverprofile=coverage.out
--html=coverage.out
--func=coverage.out

Esta clase es de las m谩s valiosas del curso.

Con la extensi贸n oficial de go en VS Code se puede evidenciar el coverage tambi茅n, solo se corren un test o los test de todo un package y te resalta con color verde lo que tienes cubierto, y rojo lo que falta por cubrir, s煤per 煤til para debuggear local tambi茅n 馃槃

Summary:

  • Code coverage

    Test coverage is a measure used to describe the degree to which the source code of a program is executed when a particular test suite runs.

    If the software you are testing contains a total of 100 lines of code and the number of lines of code that is actually validated in the same software is 50, then the code coverage percentage of this software will be 50 percent.

    To test code coverage you can use:

    $ go test -cover
    

If you wanted to, you could profile the coverage with:

$ go test -coverprofile=coverage.out # save it
$ go tool cover -func=coverage.out # make it more readable
$ go tool cover -html=coverage.out # or view it on the browser

Muy buena la herramienta!!, ya para entornos un poco m谩s productivos, la herramienta de Sonar nos puede ayudar tambi茅n con el coverage!!!

package main

import "testing"

func TestSum(t *testing.T) {
	tables := []struct {
		x int
		y int
		r int
	}{
		{1, 2, 3},
		{2, 2, 4},
		{3, 2, 5},
		{25, 26, 51},
	}

	for _, table := range tables {
		total := Sum(table.x, table.y)
		if total != table.r {
			t.Errorf("Sum(%d, %d) was incorrect, got: %d, want: %d.", table.x, table.y, total, table.r)
		}
	}
}

func TestMax(t *testing.T) {
	tables := []struct {
		x int
		y int
		r int
	}{
		{1, 2, 2},
		{2, 2, 2},
		{3, 2, 3},
		{25, 26, 26},
	}

	for _, table := range tables {
		max := GetMax(table.x, table.y)
		if max != table.r {
			t.Errorf("Max(%d, %d) was incorrect, got: %d, want: %d.", table.x, table.y, max, table.r)
		}
	}
}

Comandos
Indicador de % cubriendo las pruebas

  • go test -cover // Nos indica el nivel de cobertura de as pruebas

Para generar el archivo cover

  • go test -coverprofile=coverage.out //Usamos este archivo para tener metricas de nuestras pruebas y saber que parte de nuetsro codigo no hay pruebas

ver resumen resumen en la terminal

  • go tool cover -func=coverage.out //Indicamos que le eviamos las funciones de nuetsro archivo main.go, lista las funciones

Ver resumen en el navegador

  • go tool cover -html=coverage.out //genera un html que puedes usar el navegador para validar los procesos o funciones que no se han evaluado
a mi por alg煤n motivo el -html=coverage.out no me funciona, no me lleva a la p谩gina web.

Para mac el comando coverage es el siguiente:

go test -v --cover

y los dem谩s comandos de esta clase:

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

Muy interesante

馃槑