Sobes.tech
Junior

Qual é a diferença entre testes unitários e testes de integração?

sobes.tech IA

Resposta da IA

Os testes unitários e os testes de integração diferem ao nível de cobertura e objetivos:

  • Testes unitários verificam partes isoladas do código — normalmente funções ou métodos. Não dependem de sistemas externos (bases de dados, redes, etc.) e são executados rapidamente. O objetivo é garantir que um módulo específico funcione corretamente.

  • Testes de integração verificam a interação de vários componentes ou módulos juntos. Podem usar bases de dados reais, serviços e outras dependências externas. O objetivo é garantir que os componentes funcionem corretamente em conjunto.

Exemplo em Go:

// Teste unitário de uma função
func TestAdd(t *testing.T) {
    result := Add(2, 3)
    if result != 5 {
        t.Errorf("Esperado 5, obtido %d", result)
    }
}

// Teste de integração com base de dados
func TestUserCreation(t *testing.T) {
    db := setupTestDB()
    userService := NewUserService(db)
    err := userService.CreateUser("testuser")
    if err != nil {
        t.Fatal(err)
    }
    // Verifica se o usuário foi realmente criado na base de dados
}

Assim, os testes unitários focam na lógica, enquanto os de integração focam na interação dos componentes.