У нас есть набор тестов, который в основном использует утверждения JUnit с сопоставителями Hamcrest. Один из наших сотрудников начал экспериментировать с AssertJ и поразил людей своим синтаксисом, гибкостью и декларативностью. JUnit предоставляет одну функцию, эквивалент которой я не могу найти в AssertJ: добавление настраиваемого сообщения об ошибке утверждения.
Мы часто сравниваем объекты, которые не предназначены для чтения человеком и будут иметь случайные идентификаторы или UUID, и невозможно определить, какими они должны быть, по данным, которые они содержат. К сожалению, это неизбежная ситуация для нашей кодовой базы, поскольку часть цели, которую она выполняет, - это сопоставление данных между другими сервисами, не обязательно понимая, что это такое.
В JUnit assertThat
метод предоставляет версию с String reason
параметром перед параметром Matcher<T>
param. Это делает тривиальным добавление короткой строки отладки, проливающей некоторый свет на проблему, например, что такое сравнение должно значить для человека.
AssertJ, с другой стороны, предоставляет миллион различных обобщенныхstatic assertThat
методов, которые возвращают ту или иную форму интерфейса Assert или один из множества его реализующих классов. Этот интерфейс не предоставляет стандартного способа настройки настраиваемого сообщения, которое будет включаться в сбои.
Есть ли способ получить эту функциональность из AssertJ API или одного из его расширений без необходимости создавать собственный класс assert для каждого типа assert, в который мы хотим добавлять сообщения?
withFailMessage
дела; Мне нравится AssertJ, но это отстой.