Варианты: 1) in-memory SQLite или тестовая БД с миграциями. 2) testcontainers для реальной Postgres/MySQL. 3) интерфейс репозитория и мок в unit-тестах. 4) транзакция с откатом в конце теста (изоляция). Часто делают хелпер setupTestDB(t), возвращающий пул и путь к DSN.
db := setupTestDB(t)
tx, _ := db.BeginTx(ctx, nil)
defer tx.Rollback()
repo := NewRepo(tx)
// тесты против repo
}