Ответ
AssertJ — это современная библиотека fluent assertions для Java, предназначенная для написания читаемых, выразительных и легко поддерживаемых проверок в тестах. Она предоставляет богатый набор утверждений через цепочку методов (fluent interface).
Основные преимущества перед стандартными assert или JUnit assertions:
- Fluent-интерфейс: Цепочка методов читается как предложение на естественном языке.
- Богатый набор ассертов: Специализированные проверки для коллекций, строк,
Optional, дат, исключений, кастомных типов и т.д. - Понятные сообщения об ошибках: При падении теста выводится детальная и информативная диагностика.
- Расширяемость: Возможность создания собственных, предметно-ориентированных ассертов.
Примеры использования:
import static org.assertj.core.api.Assertions.*;
// Проверка строк
assertThat("Hello, World!")
.startsWith("Hello")
.contains("World")
.doesNotContain("Error");
// Проверка коллекций
List<String> names = List.of("John", "Jane", "Bob");
assertThat(names)
.hasSize(3)
.containsExactlyInAnyOrder("Bob", "Jane", "John")
.allMatch(name -> name.length() > 2);
// Проверка исключений
assertThatThrownBy(() -> { throw new IllegalArgumentException("Wrong argument"); })
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining("argument");
AssertJ интегрируется с основными фреймворками тестирования (JUnit, TestNG) и является стандартом де-факто для написания утверждений в Java-проектах.