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