O que é Testify e para que serve?
\n\nTestify é uma das bibliotecas mais populares para testes na linguagem Go. Ela expande os recursos do pacote padrão testing, fornecendo aos desenvolvedores utilitários poderosos para escrever testes limpos, legíveis e sustentáveis. O Testify resolve vários problemas-chave que os desenvolvedores Go enfrentam:
- \n
- Simplificação de asserções (assertions): Em vez de construções verbosas com
ifet.Errorf, o Testify oferece métodos concisos comoassert.Equal. \n - Legibilidade de erros: Quando um teste falha, o Testify exibe mensagens detalhadas, mostrando os valores esperados e reais. \n
- Criação de mocks: O suporte integrado a mocks permite isolar facilmente o código testado de dependências externas (bancos de dados, clientes HTTP, sistemas de arquivos). \n
- Agrupamento de testes (suite): Permite agrupar testes em grupos lógicos com configurações compartilhadas (Setup/Teardown). \n
Testify é ideal para projetos de qualquer tamanho — desde pequenos utilitários até grandes arquiteturas de microsserviços. É o padrão de facto para testes na comunidade Go.
\n\nInstalação
\n\nTestify é instalado como uma dependência Go comum. Certifique-se de ter o Go instalado (versão 1.16 ou superior) e um módulo inicializado (go mod init).
go get github.com/stretchr/testify\n\nApós executar o comando, o Testify será adicionado ao seu arquivo go.mod. Agora você pode importá-lo nos seus arquivos de teste.
Início rápido
\n\nVamos escrever um teste simples para uma função que soma dois números. Crie o arquivo math.go:
package main\n\nfunc Add(a, b int) int {\n return a + b\n}\n\nAgora crie o arquivo de teste math_test.go:
package main\n\nimport (\n "testing"\n "github.com/stretchr/testify/assert"\n)\n\nfunc TestAdd(t *testing.T) {\n result := Add(2, 3)\n expected := 5\n assert.Equal(t, expected, result, "2 + 3 deve ser igual a 5")\n}\n\nExecute o teste:
\n\ngo test -v\n\nVocê verá um resultado verde. Se alterar o valor esperado para 6, o teste falhará com uma mensagem de erro detalhada.
\n\nMétodos e funções principais
\n\n1. assert.Equal
\nDescrição: Verifica se dois valores são iguais. Usa reflect.DeepEqual para comparar tipos complexos (slices, structs, maps).
Parâmetros:
\n- \n
t— objeto *testing.T \n expected— valor esperado \n actual— valor real \n msg(opcional) — mensagem de erro \n
Exemplo:
\nfunc TestEqual(t *testing.T) {\n assert.Equal(t, 10, 5+5, "5+5 deve ser 10")\n assert.Equal(t, []int{1, 2, 3}, []int{1, 2, 3})\n}\n\n2. assert.NotEqual
\nDescrição: O oposto de Equal. Verifica se dois valores NÃO são iguais.
Parâmetros: Análogos ao Equal.
Exemplo:
\nfunc TestNotEqual(t *testing.T) {\n assert.NotEqual(t, 10, 5+4, "5+4 não é igual a 10")\n}\n\n3. assert.True / assert.False
\nDescrição: Verifica se uma expressão é verdadeira (True) ou falsa (False).
Parâmetros:
\n- \n
t— objeto *testing.T \n condition— expressão booleana \n msg(opcional) — mensagem de erro \n
Exemplo:
\nfunc TestTrueFalse(t *testing.T) {\n assert.True(t, 5 > 3, "5 Também na biblioteca
Gerador de QR Codes em Kotlin: criação e configuração de QR Codes
StoreKit para Swift: guia completo com exemplos
SwiftyJSON para Swift: guia completo com exemplos
Framework CLI para Swift: criação de utilitários de console no iOS/macOS
Configuração de aplicações em C++: bibliotecas e ferramentas para configuração flexível