¿Qué es Testify y para qué sirve?
\n\nTestify es una de las bibliotecas más populares para pruebas en el lenguaje Go. Amplía las capacidades del paquete estándar testing, proporcionando a los desarrolladores potentes utilidades para escribir pruebas limpias, legibles y mantenibles. Testify resuelve varios problemas clave que enfrentan los desarrolladores de Go:
- \n
- Simplificación de aserciones (assertions): En lugar de construcciones verbosas con
ifyt.Errorf, Testify ofrece métodos concisos comoassert.Equal. \n - Legibilidad de errores: Cuando una prueba falla, Testify muestra mensajes detallados que indican los valores esperados y reales. \n
- Creación de mocks: El soporte integrado para mocks permite aislar fácilmente el código bajo prueba de dependencias externas (bases de datos, clientes HTTP, sistemas de archivos). \n
- Agrupación de pruebas (suite): Permite agrupar pruebas en conjuntos lógicos con configuraciones compartidas (Setup/Teardown). \n
Testify es ideal para proyectos de cualquier tamaño, desde pequeñas utilidades hasta grandes arquitecturas de microservicios. Es el estándar de facto para pruebas en la comunidad Go.
\n\nInstalación
\n\nTestify se instala como una dependencia normal de Go. Asegúrate de tener Go instalado (versión 1.16 o superior) y un módulo inicializado (go mod init).
go get github.com/stretchr/testify\n\nDespués de ejecutar el comando, Testify se agregará a tu archivo go.mod. Ahora puedes importarlo en tus archivos de prueba.
Inicio rápido
\n\nEscribamos una prueba simple para una función que suma dos números. Creamos el archivo math.go:
package main\n\nfunc Add(a, b int) int {\n return a + b\n}\n\nAhora creamos el archivo de prueba math_test.go:
package main\n\nimport (\n "testing"\n "github.com/stretchr/testify/assert"\n)\n\nfunc TestAdd(t *testing.T) {\n result := Add(2, 3)\n expected := 5\n assert.Equal(t, expected, result, "2 + 3 debería ser igual a 5")\n}\n\nEjecuta la prueba:
\n\ngo test -v\n\nVerás un resultado verde. Si cambias el valor esperado a 6, la prueba fallará con un mensaje de error detallado.
\n\nMétodos y funciones principales
\n\n1. assert.Equal
\nDescripción: Verifica que dos valores sean iguales. Usa reflect.DeepEqual para comparar tipos complejos (slices, estructuras, mapas).
Parámetros:
\n- \n
t— objeto *testing.T \n expected— valor esperado \n actual— valor real \n msg(opcional) — mensaje de error \n
Ejemplo:
\nfunc TestEqual(t *testing.T) {\n assert.Equal(t, 10, 5+5, "5+5 debería ser 10")\n assert.Equal(t, []int{1, 2, 3}, []int{1, 2, 3})\n}\n\n2. assert.NotEqual
\nDescripción: Lo opuesto de Equal. Verifica que dos valores NO sean iguales.
Parámetros: Similares a Equal.
Ejemplo:
\nfunc TestNotEqual(t *testing.T) {\n assert.NotEqual(t, 10, 5+4, "5+4 no es igual a 10")\n}\n\n3. assert.True / assert.False
\nDescripción: Verifica que una expresión sea verdadera (True) o falsa (False).
Parámetros:
\n- \n
t— objeto *testing.T \n condition— expresión booleana \n msg(opcional) — mensaje de error \n
Ejemplo:
\nfunc TestTrueFalse(t *testing.T) {\n assert.True(t, 5 > 3, "5 También en la biblioteca
Planificador de tareas Java: Quartz Scheduler – guía completa
Generación de PDF en JavaScript: librería pdf-lib