Back to questions
Junior
707
Чем юнит-тесты отличаются от интеграционных тестов?
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)
}
// Проверяем, что пользователь действительно создан в БД
}
Таким образом, юнит-тесты фокусируются на логике, интеграционные — на взаимодействии компонентов.