Testify para Go: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é Testify e para que serve?

\n\n

Testify é 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\n
    \n
  • Simplificação de asserções (assertions): Em vez de construções verbosas com if e t.Errorf, o Testify oferece métodos concisos como assert.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
\n\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\n

Instalação

\n\n

Testify é 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).

\n\n
go get github.com/stretchr/testify
\n\n

Após executar o comando, o Testify será adicionado ao seu arquivo go.mod. Agora você pode importá-lo nos seus arquivos de teste.

\n\n

Início rápido

\n\n

Vamos escrever um teste simples para uma função que soma dois números. Crie o arquivo math.go:

\n\n
package main\n\nfunc Add(a, b int) int {\n    return a + b\n}
\n\n

Agora crie o arquivo de teste math_test.go:

\n\n
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\n

Execute o teste:

\n\n
go test -v
\n\n

Você verá um resultado verde. Se alterar o valor esperado para 6, o teste falhará com uma mensagem de erro detalhada.

\n\n

Métodos e funções principais

\n\n

1. assert.Equal

\n

Descrição: Verifica se dois valores são iguais. Usa reflect.DeepEqual para comparar tipos complexos (slices, structs, maps).

\n

Parâmetros:

\n
    \n
  • t — objeto *testing.T
  • \n
  • expected — valor esperado
  • \n
  • actual — valor real
  • \n
  • msg (opcional) — mensagem de erro
  • \n
\n

Exemplo:

\n
func 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\n

2. assert.NotEqual

\n

Descrição: O oposto de Equal. Verifica se dois valores NÃO são iguais.

\n

Parâmetros: Análogos ao Equal.

\n

Exemplo:

\n
func TestNotEqual(t *testing.T) {\n    assert.NotEqual(t, 10, 5+4, "5+4 não é igual a 10")\n}
\n\n

3. assert.True / assert.False

\n

Descrição: Verifica se uma expressão é verdadeira (True) ou falsa (False).

\n

Parâmetros:

\n
    \n
  • t — objeto *testing.T
  • \n
  • condition — expressão booleana
  • \n
  • msg (opcional) — mensagem de erro
  • \n
\n

Exemplo:

\n
func TestTrueFalse(t *testing.T) {\n    assert.True(t, 5 > 3, "5                    

Recommendations