9. Testing en go¶
El paquete testing es el estándar en Go para escribir pruebas.
Otros framework de testing: Testify
Ejemplo:
fichero main.go
package main
func Suma(a, b int) int {
return a + b
}
fichero de prueba: main_test.go
package main
import "testing"
func TestSuma(t *testing.T) {
resultado := Suma(2, 3)
esperado := 5
if resultado != esperado {
t.Errorf("Suma(2, 3) = %d; esperado %d", resultado, esperado)
}
}
Para ejecutar las pruebas, se utiliza el comando go test
en la terminal.
9.1 Caracteristicas de Testing¶
- Ejecución de pruebas unitarias: Las funciones deben comenzar con Test y recibir un puntero a ***testing.T**.
- Mensajes de error: Se usa t.Errorf o t.Fatalf para reportar errores en las pruebas.
- Cobertura de código: Puedes generar un reporte de cobertura con:
go test -cover
9.2 Testify¶
9.2.1 Paquete Assert¶
El paquete assert simplifica la escritura de pruebas:
- Imprisión amigable , facil de leer
- Manejo de errores
- Puede anotar cada aserción con un mensaje
package yours
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestSomething(t *testing.T) {
// assert equality
assert.Equal(t, 123, 123, "they should be equal")
// assert inequality
assert.NotEqual(t, 123, 456, "they should not be equal")
// assert for nil (good for errors)
assert.Nil(t, object)
// assert for not nil (good when you expect something)
if assert.NotNil(t, object) {
// now we know that object isn't nil, we are safe to make
// further assertions without causing any errors
assert.Equal(t, "Something", object.Value)
}
}