Ответ
Юнит (Unit) в модульном тестировании — это минимальная, логически завершённая и изолируемая часть программного кода, предназначенная для независимой проверки. Чаще всего это один метод или функция, но может быть и небольшой класс, если его методы тесно связаны.
Ключевые характеристики юнита:
- Минимальность: Проверяет одну конкретную ответственность или путь выполнения.
- Изолированность: Не зависит от внешних систем (БД, сетевых сервисов, файловой системы). Зависимости заменяются заглушками (stubs) или макетами (mocks).
- Скорость: Выполняется очень быстро (миллисекунды).
- Детерминированность: Результат всегда одинаковый при одинаковых входных данных.
Пример:
Класс для тестирования:
public class Calculator {
public int add(int a, int b) {
return a + b; // Этот метод — кандидат в "юнит"
}
}
Модульный тест для этого юнита:
@Test
public void add_TwoPositiveNumbers_ReturnsSum() {
// 1. Arrange (Подготовка)
Calculator calc = new Calculator();
int a = 2, b = 3;
int expected = 5;
// 2. Act (Действие) — тестируем ОДНУ функцию
int actual = calc.add(a, b);
// 3. Assert (Проверка)
assertEquals(expected, actual);
}
Что НЕ является юнитом? Тест, который обращается к реальной базе данных, вызывает REST API или читает файл с диска — это уже интеграционный или системный тест.