[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-testirovanie-chto-takoe-assertj":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},1291,"chto-takoe-assertj",42,"testirovanie","Тестирование","✅","Что такое AssertJ?","AssertJ -- библиотека fluent assertions для Java, предоставляющая читаемый chainable API вместо стандартных `assertEquals`\u002F`assertTrue`. Входит в `spring-boot-starter-test`.\n\n### Сравнение с JUnit assertions\n\n| JUnit 5 | AssertJ |\n|---------|---------|\n| `assertEquals(\"John\", name)` | `assertThat(name).isEqualTo(\"John\")` |\n| `assertTrue(list.contains(\"item\"))` | `assertThat(list).contains(\"item\")` |\n| `assertNotNull(result)` | `assertThat(result).isNotNull()` |\n\nПреимущество AssertJ -- IDE автоподсказки после `assertThat()`, цепочки проверок, лучшие сообщения об ошибках.\n\n### Проверка коллекций\n\n```java\nassertThat(users)\n    .hasSize(3)\n    .extracting(User::getName)\n    .containsExactly(\"Alice\", \"Bob\", \"Charlie\");\n\nassertThat(users)\n    .filteredOn(User::isActive)\n    .extracting(User::getEmail)\n    .allMatch(email -> email.contains(\"@\"));\n```\n\n### Проверка исключений\n\n```java\nassertThatThrownBy(() -> service.findById(-1L))\n    .isInstanceOf(NotFoundException.class)\n    .hasMessageContaining(\"not found\")\n    .hasFieldOrPropertyWithValue(\"id\", -1L);\n\nassertThatCode(() -> service.findById(1L))\n    .doesNotThrowAnyException();\n```\n\n### Soft Assertions\n\nВсе проверки выполняются, ошибки собираются и показываются вместе:\n\n```java\nSoftAssertions.assertSoftly(softly -> {\n    softly.assertThat(user.getName()).isEqualTo(\"John\");\n    softly.assertThat(user.getEmail()).isEqualTo(\"john@mail.com\");\n    softly.assertThat(user.getId()).isNotNull();\n});\n```\n\n### Ключевые принципы\n\n- `assertThat(actual)` -- точка входа; IDE автоматически подсказывает доступные проверки\n- `extracting()` -- извлечение полей из объектов\u002Fколлекций для цепочки проверок\n- `SoftAssertions` -- аналог `assertAll` из JUnit, но с fluent API\n\n### Частые ошибки\n\n- Путать порядок аргументов -- `assertThat(actual)`, не `assertThat(expected)`\n- Импортировать JUnit assertEquals вместе с AssertJ -- конфликт; выберите один стиль\n\n### Как используется в 2026\n\n- AssertJ -- стандарт де-факто; Spring Boot включает в `spring-boot-starter-test`\n- Лучшие сообщения об ошибках: `expected: \"John\" but was: \"Jane\"` вместо JUnit `expected \u003CJohn> but was \u003CJane>`\n\n> **На собеседовании:** интервьюер может попросить переписать JUnit assert на AssertJ. Важно показать знание `assertThat()`, `extracting()`, `assertThatThrownBy()`. Частая ошибка -- не знать про `SoftAssertions` и писать `assertThat(expected)` вместо `assertThat(actual)`.","","junior",[15],"testing",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Что такое AssertJ? — Gymterview","AssertJ -- библиотека fluent assertions для Java, предоставляющая читаемый chainable API вместо стандартных `assertEquals`\u002F`assertTrue`. Входит в `spring-boot-s","AssertJ -- библиотека fluent assertions для Java, предоставляющая читаемый chainable API вместо стандартных `assertEqual",[15,13],"AssertJ -- библиотека fluent assertions для Java, предоставляющая читаемый chainable API вместо стандартных `assertEquals`\u002F`assertTrue`. Входит в `spring-boot-starter-test`.",true]