go test vs Testify: como testar código Go no CI
Eles não são rivais: o go test é o runner embutido, e o Testify é uma biblioteca que adiciona assertions e mocks por cima dele.
O go test é o test runner padrão e embutido do Go, usando o pacote testing. O Testify é uma biblioteca de terceiros popular que adiciona assertions expressivas, verificações no estilo require, suites e mocking - tudo executado pelo go test.
| go test (stdlib) | Testify | |
|---|---|---|
| Papel | Test runner embutido | Biblioteca de assertion/mock por cima |
| Assertions | Manual (if + t.Errorf) | Helpers assert / require |
| Mocking | Feito à mão / interfaces | Pacote mock |
| Suites | Funções simples | Pacote suite |
| Executa via | go test | go test (ainda) |
No CI
Você sempre executa go test no CI; a questão é se deve adicionar o Testify. A biblioteca padrão mantém os testes livres de dependências e idiomáticos, o que muitas equipes Go preferem. O Testify reduz o boilerplate com assertions legíveis e mocking embutido, o que acelera a escrita de testes para bases de código maiores. Ambos produzem a mesma saída do go test e integram com coverage e -race.
Velocidade e confiabilidade
Use go test -race no CI para detectar data races, faça cache do build/module cache para uma preparação rápida e planeje reexecutar falhas transitórias. Grandes matrizes de testes Go terminam mais cedo em runners gerenciados mais rápidos.
O veredito
Querendo zero dependências e testes idiomáticos com a stdlib: go test puro. Querendo assertions concisas, suites e mocks com menos boilerplate: adicione o Testify (ainda executado pelo go test). Eles se complementam em vez de competir.