Sobes.tech
Back to questions
Junior
706

Чем юнит-тесты отличаются от интеграционных тестов?

Answer from AI

sobes.tech AI

Юнит-тесты и интеграционные тесты отличаются по уровню охвата и целям:

  • Юнит-тесты проверяют отдельные, изолированные части кода — обычно функции или методы. Они не зависят от внешних систем (баз данных, сети и т.п.) и выполняются быстро. Цель — убедиться, что конкретный модуль работает корректно.

  • Интеграционные тесты проверяют взаимодействие нескольких компонентов или модулей вместе. Они могут использовать реальные базы данных, сервисы и другие внешние зависимости. Цель — убедиться, что компоненты корректно работают вместе.

Пример на Go:

// Юнит-тест функции
func TestAdd(t *testing.T) {
    result := Add(2, 3)
    if result != 5 {
        t.Errorf("Expected 5, got %d", result)
    }
}

// Интеграционный тест с базой данных
func TestUserCreation(t *testing.T) {
    db := setupTestDB()
    userService := NewUserService(db)
    err := userService.CreateUser("testuser")
    if err != nil {
        t.Fatal(err)
    }
    // Проверяем, что пользователь действительно создан в БД
}

Таким образом, юнит-тесты фокусируются на логике, интеграционные — на взаимодействии компонентов.