AssertJ представляет собой библиотеку для утверждений (assertions) в тестах на языке Java, которая предоставляет богатый и интуитивно понятный интерфейс для написания утверждений. Это делает код тестов более читаемым и легко поддерживаемым. AssertJ является популярной альтернативой стандартным утверждениям JUnit благодаря своей мощности и гибкости. Вот основные возможности AssertJ:
AssertJ использует “fluent API” или “method chaining”, что позволяет формировать утверждения в цепочку, делая их более выразительными и легкими для чтения:
assertThat(frodo.getName()).isEqualTo("Frodo");
AssertJ предлагает богатый набор утверждений для тестирования коллекций, позволяющий проверять размер, элементы, порядок элементов и даже выполнение условий для каждого элемента:
assertThat(Arrays.asList("one", "two", "three"))
.hasSize(3)
.contains("one", "two")
.doesNotContain("four");
Утверждения для строк в AssertJ позволяют проверять содержимое, начало, конец, регулярные выражения и многое другое:
assertThat("Gandalf the Grey").startsWith("Gandalf").endsWith("Grey")
.matches("Gandalf the .*");
AssertJ упрощает тестирование методов, которые должны генерировать исключения, с помощью утверждений для исключений:
assertThatThrownBy(() -> { throw new Exception("boom!"); })
.isInstanceOf(Exception.class)
.hasMessageContaining("boom");
С помощью AssertJ можно легко тестировать API дат и времени в Java 8, проверяя даты, времена и даже их комбинации:
assertThat(LocalDate.of(2017, 1, 1)).isBefore(LocalDate.of(2017, 1, 2));
AssertJ позволяет создавать кастомные утверждения, которые удовлетворяют специфичным требованиям проекта или предметной области, расширяя базовый функционал утверждений.
Проверка файлов и путей также входит в возможности AssertJ, позволяя проверять существование файлов, их содержимое, и прочие атрибуты:
assertThat(Paths.get("status.txt")).exists().isReadable();
AssertJ предлаг
ает утверждения для тестирования JSON данных через дополнительные модули, которые могут быть подключены для расширения базовых возможностей.
Soft assertions позволяют выполнить несколько утверждений в одном блоке теста, собирая все ошибки и предоставляя их в конце выполнения теста:
SoftAssertions softly = new SoftAssertions();
softly.assertThat(1).isEqualTo(1);
softly.assertThat(1).isNotEqualTo(1); // This will not stop the test execution
softly.assertAll(); // This will report all failures at once
AssertJ является мощным инструментом для улучшения качества тестов и их поддержки, делая утверждения более наглядными и легкими для понимания.