Escritura de pruebas unitarias con testing
Funciones TestXxx, t.Error, t.Fatal y t.Helper
Escritura de pruebas unitarias con testing es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.
paquete testing
El paquete integrado testing de Go proporciona todo lo necesario para las pruebas unitarias: funciones de prueba, informes de errores y binarios de prueba. No se necesita ningún framework externo.
Firma de una función de prueba
Las funciones de prueba deben comenzar por Test, recibir *testing.T y estar en archivos cuyo nombre termine en _test.go.
func TestAdd(t *testing.T) {
got := Add(2, 3)
if got != 5 {
t.Errorf("Add(2,3) = %d; want 5", got)
}
}t.Error frente a t.Fatal
t.Error marca el fallo y continúa; t.Fatal marca el fallo y detiene inmediatamente la prueba actual. Use Fatal cuando las aserciones posteriores dependan de la que ha fallado.
Ejecución de pruebas
Ejecute todas las pruebas: go test ./.... Ejecute una prueba específica: go test -run TestAdd. Añada -v para obtener una salida detallada.
go test -v -run TestAdd ./...t.Helper
Marque los helpers de aserciones con t.Helper() para que los mensajes de error indiquen la línea del llamador y no la del helper.
func assertEqual(t *testing.T, got, want int) {
t.Helper()
if got != want {
t.Errorf("got %d; want %d", got, want)
}
}TestMain
TestMain(m *testing.M) es un punto de entrada opcional para realizar la configuración y la limpieza antes y después de ejecutar todo el conjunto de pruebas, por ejemplo, iniciar una base de datos de prueba.
func TestMain(m *testing.M) {
setup()
code := m.Run()
teardown()
os.Exit(code)
}Subpruebas con t.Run
Agrupe casos relacionados con t.Run. Cada subprueba se ejecuta de forma independiente y puede seleccionarse con -run TestFoo/SubcaseName.
func TestMath(t *testing.T) {
t.Run("addition", func(t *testing.T) { /* ... */ })
t.Run("subtraction", func(t *testing.T) { /* ... */ })
}Estructura de los archivos de prueba
Las pruebas del mismo paquete pueden acceder a identificadores no exportados. Las pruebas de un paquete _test (pruebas de caja negra) solo pueden acceder a identificadores exportados.
// white-box: package mylib
// black-box: package mylib_testgo test -cover
Mida la cobertura del código con go test -cover. Para obtener un informe HTML detallado: go test -coverprofile=c.out ./... && go tool cover -html=c.out.
Pruebas con interfaces
Diseñe el código basándose en interfaces para que las pruebas puedan proporcionar implementaciones simuladas sin iniciar servicios reales.
t.Parallel
Llame a t.Parallel() al inicio de una prueba para marcarla como segura para ejecutarse simultáneamente con otras pruebas paralelas, acelerando así el conjunto de pruebas.
func TestRead(t *testing.T) {
t.Parallel()
// ...
}Comprobación rápida
¿Cuál es la diferencia entre t.Error y t.Fatal?
Resumen: pruebas unitarias con testing
Puntos clave:
- Funciones de prueba: TestXxx(t *testing.T) en archivos _test.go
- t.Error continúa; t.Fatal detiene la prueba
- t.Helper() proporciona números de línea limpios en los mensajes de error de los helpers
- t.Run para subpruebas; t.Parallel para pruebas simultáneas
Preguntas frecuentes
¿La lección «Escritura de pruebas unitarias con testing» es gratis?
Sí — el texto completo de «Escritura de pruebas unitarias con testing» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Escritura de pruebas unitarias con testing»?
Funciones TestXxx, t.Error, t.Fatal y t.Helper Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Go Academy?
No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Escritura de pruebas unitarias con testing»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Go Academy?
Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Escritura de pruebas unitarias con testing
- Pruebas basadas en tablas
- Dobles de prueba: mocks y stubs
- Cobertura de pruebas y testify