Go — Testes
TL;DR
Galho 15 da trilha Go — testar é cidadão de primeira classe da toolchain, não um add-on. 8 notas em 3 fases: o primeiro
_test.goe o idioma table-driven (Iniciado); testify, test doubles via interface e testes de integração (Adepto); benchmarks, fuzzing e cobertura idiomática (Magus). Ao fim, você escreve testes que a comunidade Go reconhece como idiomáticos — table-driven, sem framework pesado, apoiados nas interfaces do galho 3.
O go test vem na caixa, e a cultura de testes de Go é enxuta: table-driven por padrão, mocks via interface, e ceticismo saudável com frameworks. Ver roadmap pro estado das notas.
Notas por fase
Iniciado — o básico da toolchain
- 01 - go test e o primeiro teste — arquivos
_test.go,TestXxx(t *testing.T),go test ./...,t.Error/t.Fatal - 02 - Table-driven tests — o idioma central: slice de casos +
t.Run, subtests nomeados
Adepto — ferramentas e isolamento
- 03 - Testify e asserções —
assertvsrequire, quando a stdlib basta, o debate “sem framework” - 04 - Test doubles — interfaces e mocks — mockar via interface, gomock/mockery, injetar fakes
- 05 - Testes de integração — build tags,
httptest, testcontainers-go, separar unit de integração
Magus — medir e cobrir
- 06 - Benchmarks —
BenchmarkXxx(b *testing.B),b.N, benchstat, medir antes de otimizar - 07 - Fuzzing —
FuzzXxx(f *testing.F)(1.18), corpus, achar edge cases automaticamente - 08 - Cobertura e testes idiomáticos —
-cover, o que não testar, TDD em Go, testes como documentação
Veja também
- Trilha Go — índice geral (21 galhos + capstone)
- Galho anterior: Microservices e arquitetura
- Próximo galho: Observabilidade (galho 16) — instrumentar o serviço para enxergar o que acontece em produção