Mamy zestaw testów, który używa głównie asercji JUnit z dopasowywaniem Hamcrest. Jeden z naszych zespołów zaczął eksperymentować z AssertJ i zaimponował ludziom jego składnią, elastycznością i deklaratywnością. Jest jedna funkcja, którą JUnit zapewnia, a której nie mogę znaleźć odpowiednika w AssertJ: dodanie niestandardowego komunikatu o błędzie potwierdzenia.
Często porównujemy obiekty, które nie są przeznaczone do czytelności dla ludzi i będą miały losowo wyglądające identyfikatory lub identyfikatory UUID, a na podstawie zawartych w nich danych nie można stwierdzić, jakie mają być. Jest to sytuacja nieunikniona dla naszej bazy kodu, niestety, ponieważ część celu, który spełnia, polega na mapowaniu danych między innymi usługami, niekoniecznie rozumiejąc, co to jest.
W JUnit assertThat
metoda udostępnia wersję z String reason
parametrem przed Matcher<T>
parametrem. To sprawia, że dodanie krótkiego ciągu diagnostycznego rzucającego trochę światła na problem, na przykład, co to porównanie powinno oznaczać dla człowieka, jest trywialne.
Z drugiej strony, AssertJ udostępnia mnóstwo różnych uogólnionychstatic assertThat
metod, które zwracają jakąś formę interfejsu Assert lub jedną z wielu klas implementujących. Ten interfejs nie zapewnia standardowego sposobu ustawiania niestandardowego komunikatu, który ma być dołączany do błędów.
Czy istnieje sposób, aby uzyskać tę funkcjonalność z API AssertJ lub jednego z jego rozszerzeń bez konieczności tworzenia niestandardowej klasy assert dla każdego typu potwierdzenia, do którego chcemy dodać komunikaty?
źródło
withFailMessage
sprawy; Lubię AssertJ, ale to jest do bani.FYI jest to udokumentowane w nowej witrynie AssertJ, patrz https://assertj.github.io/doc/#assertj-core-assertion-description .
źródło
Użyj wbudowanej
as()
metody w AssertJ. Na przykład:assertThat(myTest).as("The test microservice is not active").isEqualTo("active");
źródło