У нас є набір тестів, який в основному використовує твердження JUnit з відповідниками Hamcrest. Один із нашої команди почав експериментувати з AssertJ і вразив людей своїм синтаксисом, гнучкістю та декларативністю. Є одна особливість, яку надає JUnit, і я не можу знайти еквівалент в AssertJ: додавання власного повідомлення про помилку затвердження.
Ми часто порівнюємо об’єкти, які створені не для людської читабельності та мають випадкові ідентифікатори або UUID, і за даними, які вони містять, неможливо визначити, якими вони повинні бути. На жаль, це неминуча ситуація для нашої кодової бази, на жаль, оскільки частина цілі, яку вона виконує, - це зіставлення даних між іншими службами, не обов'язково розуміючи, що це таке.
У JUnit assertThat
метод надає версію з String reason
параметром перед Matcher<T>
параметром. Це робить тривіальним додавання короткого рядка налагодження, який проливає деяке світло на проблему, наприклад, те, що порівняння повинно означати для людини.
AssertJ, навпаки, забезпечує мільйон різних узагальненихstatic assertThat
методів, які повертають якусь форму інтерфейсу Assert або один із багатьох його реалізаційних класів. Цей інтерфейс не забезпечує стандартний спосіб встановлення користувацького повідомлення, яке включатиметься у разі помилок.
Чи є спосіб отримати цю функціональність від API AssertJ або одного з його розширень без необхідності створювати власний клас затвердження для кожного типу затвердження, до якого ми хочемо додавати повідомлення?
withFailMessage
речовини; Мені подобається AssertJ, але це відмовно.