java-course

..

AssertJ представляет собой библиотеку для утверждений (assertions) в тестах на языке Java, которая предоставляет богатый и интуитивно понятный интерфейс для написания утверждений. Это делает код тестов более читаемым и легко поддерживаемым. AssertJ является популярной альтернативой стандартным утверждениям JUnit благодаря своей мощности и гибкости. Вот основные возможности AssertJ:

1. Цепочечный Синтаксис Утверждений (Fluent Assertion API)

AssertJ использует “fluent API” или “method chaining”, что позволяет формировать утверждения в цепочку, делая их более выразительными и легкими для чтения:

assertThat(frodo.getName()).isEqualTo("Frodo");

2. Поддержка Различных Типов Данных

3. Утверждения для Коллекций

AssertJ предлагает богатый набор утверждений для тестирования коллекций, позволяющий проверять размер, элементы, порядок элементов и даже выполнение условий для каждого элемента:

assertThat(Arrays.asList("one", "two", "three"))
  .hasSize(3)
  .contains("one", "two")
  .doesNotContain("four");

4. Утверждения для Строк

Утверждения для строк в AssertJ позволяют проверять содержимое, начало, конец, регулярные выражения и многое другое:

assertThat("Gandalf the Grey").startsWith("Gandalf").endsWith("Grey")
  .matches("Gandalf the .*");

5. Интеграция с Исключениями

AssertJ упрощает тестирование методов, которые должны генерировать исключения, с помощью утверждений для исключений:

assertThatThrownBy(() -> { throw new Exception("boom!"); })
  .isInstanceOf(Exception.class)
  .hasMessageContaining("boom");

6. Утверждения для Дат и Времени

С помощью AssertJ можно легко тестировать API дат и времени в Java 8, проверяя даты, времена и даже их комбинации:

assertThat(LocalDate.of(2017, 1, 1)).isBefore(LocalDate.of(2017, 1, 2));

7. Кастомные Утверждения

AssertJ позволяет создавать кастомные утверждения, которые удовлетворяют специфичным требованиям проекта или предметной области, расширяя базовый функционал утверждений.

8. Утверждения для Файлов

Проверка файлов и путей также входит в возможности AssertJ, позволяя проверять существование файлов, их содержимое, и прочие атрибуты:

assertThat(Paths.get("status.txt")).exists().isReadable();

9. Работа с JSON

AssertJ предлаг

ает утверждения для тестирования JSON данных через дополнительные модули, которые могут быть подключены для расширения базовых возможностей.

10. Навигационные Утверждения (Soft Assertions)

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 является мощным инструментом для улучшения качества тестов и их поддержки, делая утверждения более наглядными и легкими для понимания.