Sobes.tech
Junior — Middle

Как да различим модулните тестове от тестовете за интеграция и какви са основните им разлики?

sobes.tech AI

Отговор от AI

Юнит тестовете проверяват отделни, изолирани части от кода — обикновено конкретни методи или класове — без взаимодействие с външни системи (бази данни, мрежа и т.н.). Те са бързи, прости и помагат да се уверите, че конкретен парче логика работи правилно.

Интеграционните тестове проверяват взаимодействието между няколко компонента или модула на системата. Те могат да използват реални бази данни, API или други услуги, за да се уверят, че компонентите работят правилно заедно.

Основни разлики:

  • Обхват на теста: единични — един модул, интеграционни — няколко модула заедно.
  • Изолация: единични — изолирани, интеграционни — не.
  • Скорост: единични — по-бързи, интеграционни — по-бавни.
  • Цел: единични — проверка на логиката, интеграционни — проверка на взаимодействието.

Пример в C#:

// Единичен тест
[Test]
public void Add_TwoNumbers_ReturnsSum()
{
    var calculator = new Calculator();
    Assert.AreEqual(5, calculator.Add(2, 3));
}

// Интеграционен тест
[Test]
public void SaveUser_UserIsSavedInDatabase()
{
    var userService = new UserService(new Database());
    var user = new User { Name = "John" };
    userService.Save(user);
    Assert.IsTrue(userService.Exists(user));
}