Pular para conteúdo

Aula 13 - Testes em Go ✅

Garantindo a Qualidade e Estabilidade do seu Código


Agenda de Hoje 📅

  1. Por que testar é vital?
  2. O comando go test
  3. Testes Unitários Básicos
  4. Table-Driven Tests (Idiomático)
  5. Cobertura e Performance
  6. Mini-Projeto: TDD na Prática

1. O Suporte Nativo 🧪

  • Go não precisa de frameworks externos (como Jest ou JUnit).
  • Pacote testing e comando go test fazem tudo.
  • Sufixo obrigatório: _test.go.

2. Testes de Tabela (Professional) 📊

  • Teste múltiplos cenários com um único loop.
tests := []struct {
    a, b, want int
}{
    {1, 1, 2},
    {2, 2, 4},
    {-1, 1, 0},
}

3. Cobertura de Testes 📈

  • Quanto do seu código está realmente protegido?
$ go test -cover
coverage: 87.5%
  • Gere relatórios HTML visuais para análise.

4. Mocking de API 🎭

  • Teste Handlers sem subir o servidor.
  • Pacote net/http/httptest.
graph LR
    Test[Test Code] -->|Fake Req| Handler[Handler]
    Handler -->|Record| res[ResponseRecorder]
    res -->|Verify| Test

5. Benchmarks: Medindo Velocidade ⚡

  • Teste o tempo de execução e alocação de memória.
func BenchmarkProcesso(b *testing.B) {
    for i := 0; i < b.N; i++ {
        Processo()
    }
}

6. Mini-Projeto: TDD na Prática 🚀

  • Inverter uma string.
  • Passo 1: Criar o teste (FAIL).
  • Passo 2: Codar a função.
  • Passo 3: Testar novamente (PASS).

Resumo da Aula ✅

  • Testes em Go são simples e rápidos.
  • Table-driven tests evitam duplicação de lógica.
  • Cobertura alta = Dormir tranquilo.

Próxima Aula: Arquitetura Limpa 🏗️

  • Injeção de Dependência.
  • Organizando grandes projetos.

Dúvidas? 🤔

"Testes não evitam bugs, eles evitam que os mesmos bugs voltem."