Cómo configurar correctamente el entorno de pruebas (setup) en Go con el paquete testing?
¡Hola a todos! Empecé a estudiar Go y estoy intentando escribir unit tests para mi proyecto. Tengo una función que trabaja con una base de datos y ejecuta varias consultas. Para las pruebas, necesito preparar los datos antes de cada test: crear tablas, insertar registros de prueba, y después del test, limpiar todo.
Conozco las funciones TestMain y t.Run, pero no entiendo cómo usarlas correctamente para setup/teardown. En otros lenguajes (Java, Python) estoy acostumbrado a anotaciones @Before/@After o fixtures de pytest. En Go no existe eso, y siento que estoy copiando el mismo código en cada test.
Aquí hay un ejemplo de mi enfoque actual (que no me gusta):
```go
func TestGetUser(t *testing.T) {
db := setupDB() // creo la BD, tablas, inserto datos
defer teardownDB(db) // elimino tablas
user, err := GetUser(db, 1)
if err != nil {
t.Fatal(err)
}
if user.Name != "Alice" {
t.Errorf("expected Alice, got %s", user.Name)
}
}
func TestCreate