4. Objetivos
Apresentar as bases para testes eficazes em Go com enfoque na biblioteca
padrão, junto com algumas alternativas.
5. Por que testar?
Melhora foco no desenvolvimento.
Evitar quebrar código que já está funcionando.
Verificar se máquinas estão funcionando corretamente
…….
6. go test
go test // testando o pacote local
go test some/pkg // testa o pacote
go test -v some/pkg -run ^TestSum$ // roda somente os testes especificados
go test --cover // Faz análise de cobertura
https://golang.org/src/cmd/go/test.go
7. Testes em go
Testes ficam localizados em arquivos que terminam com "_test.go"
Uma função de teste começa com Test* e tem apenas *testing.T como parâmetro
9. Suporte dos Plugins para testes
Atom (go-plus) Vim (vim-go) IntelliJ
Rodar Suites
Rodar teste específco
Cobertura de Código
Outros Keybindings para troca
rápida, macros
inteligentes para testes
15. Black Jack
Cartas do baralho.
Cartas de 2 a 9 valem o valor da carta
Figuras (Rei, Dama ou Valete) valem 10 pontos.
Ás vale 11
Com um Ás e uma Figura temos Blackjack
Se as cartas somarem mais que 21 é um "Burst".
16. Implementando Testes - Cálculo do Score
Uma mão é representada por uma string, cada char é uma carta.
30. Testando HTTP - BlackJack
Queremos criar uma API para o nosso app:
GET /blackjack
● Parâmetros
○ hand [string] : String representando a mão do jogador
● Retornos
○ [422], se 'hand' não estiver presente
○ [422], se 'hand' for inválida
○ [200, resultado] se a mão for válida
32. Testando HTTP - BlackJack
https://golang.org/pkg/net/http/httptest/
Pacote utilitário para testar chamadas http.
Em especial, provê a struct *ResponseRecorder, que implementa a interface
*ResponseWriter
46. Conclusão
Testar em GO não é difícil
Para microserviços, a biblioteca padrão é mais que suficiente
Para aplicações maiores, GoConvey ou Ginkgo podem trazer mais benefícios, ao
custo de perder integrações com as IDEs