AssertJ

AssertJ - это assertJ-core, а также множество связанных с ним opensource библиотек и инструментов, которые позволяют гибко работать с assertions над типизированными объектами. AssertJ обладает большим количеством возможностей, на нее легко перевести проект, есть плагины генерации assertions по классам, а так же существует allure интеграция.

AssertJ-core

Из коробки assertJ-core предоставляет большое количество полезных фич. Все assertions типизированы (IDE подскажет, что можно проверить у данного типа) и имеют fluent интерфейс. С помощью assertJ удобно проверять коллекции, есть сравнение объектов по полям с различными стратегиями, а так же soft assertions, которое позволяет хранить ошибки в случае несколько проверок, а не падать на первой. Все фичи можно посмотреть тут

Перевод на assertJ

В assertJ-core есть sh скрипты для конвертации стандартных Junit assert-ов на assertJ. Например для assertEquals(actual, expected) будет сконвертировано в assertThat(actual).equalTo(expected). К сожалению, конвертации assertThat с Hamcrest матчерами на assertJ пока не добавили. Увы.

Кодогенерация

Для удобства работы с пользовательскими классами, есть maven и gradle плагины для генерации assertions. Например, вместо:

assertThat(object).hasProperty("a", expected)

После генерации можно писать проще:

assertThat(object).hasA(expected)

Более того есть кастомизация assertions через темплейты!

Allure-assertJ

Есть готовая интеграция с allure. Она позволяет прокидывать все assertions в allure отчет. Реализовано это через aspect и в отчете, например, для сгенеренных assertions выглядит так:

Alt text

truth

Поддержка assert-ов для android прекращена. Есть библиотеки от google, в которой это реализовано truth. Подробное сравнение assertJ vs truth есть на официальном сайте.