Ответ
Утверждения (asserts) — это методы в тестовых фреймворках, которые проверяют, соответствует ли фактическое поведение тестируемого кода ожидаемому. Они являются основным механизмом валидации в автоматизированных тестах.
Роль:
- Автоматическая проверка: Заменяют визуальную проверку результатов.
- Документирование ожиданий: Читаемый код теста показывает, что именно проверяется.
- Формирование отчёта: При неудаче assert генерирует понятное сообщение об ошибке, указывая на расхождение.
Пример с JUnit 5:
import static org.junit.jupiter.api.Assertions.*;
@Test
void testAddition() {
Calculator calc = new Calculator();
int actualResult = calc.add(2, 3);
// Основное утверждение: проверка равенства ожидаемого и фактического
assertEquals(5, actualResult, "2 + 3 должно равняться 5");
}
@Test
void testListIsNotEmpty() {
List<String> items = service.getItems();
assertFalse(items.isEmpty(), "Список items не должен быть пустым");
}
Распространённые типы утверждений:
- Проверка равенства:
assertEquals(expected, actual),assertNotEquals() - Проверка условий:
assertTrue(condition),assertFalse(condition) - Проверка на null:
assertNull(object),assertNotNull(object) - Проверка ссылок:
assertSame(expected, actual)(тот же объект),assertNotSame() - Проверка исключений:
assertThrows(ExpectedException.class, () -> code) - Групповые проверки:
assertAll()— выполняет несколько утверждений, даже если некоторые падают.
Почему это важно: Без утверждений тест не может автоматически определить успешность или провал. Они превращают код из простого исполнителя в самодостаточный критерий корректности.