Como configurar corretamente o ambiente de teste (setup) em Go usando o pacote testing?
Olá a todos! Comecei a estudar Go e estou tentando escrever unit tests para meu projeto. Tenho uma função que trabalha com banco de dados e executa várias queries. Para testar, preciso preparar os dados antes de cada teste: criar tabelas, inserir registros de teste e, após o teste, limpar tudo.
Eu conheço as funções TestMain e t.Run, mas não consigo entender como usá-las corretamente para setup/teardown. Em outras linguagens (Java, Python), estou acostumado com anotações @Before/@After ou fixtures do pytest. Em Go, isso não existe, e sinto que estou copiando o mesmo código em cada teste.
Aqui está um exemplo da minha abordagem atual (que não gosto):
```go
func TestGetUser(t *testing.T) {
db := setupDB() // crio o banco, tabelas, insiro dados
defer teardownDB(db) // removo as tabelas
```