Sobes.tech
Junior

Czym różnią się testy jednostkowe od testów integracyjnych?

sobes.tech AI

Odpowiedź od AI

Testy jednostkowe i testy integracyjne różnią się poziomem pokrycia i celami:

  • Testy jednostkowe sprawdzają pojedyncze, izolowane części kodu — zazwyczaj funkcje lub metody. Nie zależą od systemów zewnętrznych (baz danych, sieci itp.) i są wykonywane szybko. Celem jest upewnienie się, że konkretny moduł działa poprawnie.

  • Testy integracyjne sprawdzają współdziałanie kilku komponentów lub modułów razem. Mogą korzystać z rzeczywistych baz danych, usług i innych zależności zewnętrznych. Celem jest upewnienie się, że komponenty poprawnie współpracują.

Przykład w Go:

// Test jednostkowy funkcji
func TestAdd(t *testing.T) {
    result := Add(2, 3)
    if result != 5 {
        t.Errorf("Oczekiwano 5, otrzymano %d", result)
    }
}

// Test integracyjny z bazą danych
func TestUserCreation(t *testing.T) {
    db := setupTestDB()
    userService := NewUserService(db)
    err := userService.CreateUser("testuser")
    if err != nil {
        t.Fatal(err)
    }
    // Sprawdzamy, czy użytkownik został faktycznie utworzony w bazie
}

W ten sposób testy jednostkowe skupiają się na logice, a integracyjne na współdziałaniu komponentów.