Abbiamo una suite di test che utilizza principalmente le asserzioni JUnit con i matcher Hamcrest. Uno del nostro team ha iniziato a sperimentare con AssertJ e ha impressionato le persone con la sua sintassi, flessibilità e dichiaratività. C'è una funzionalità fornita da JUnit per la quale non riesco a trovare un equivalente in AssertJ: l'aggiunta di un messaggio di errore di asserzione personalizzato.
Spesso confrontiamo oggetti che non sono fatti per la leggibilità umana e avranno ID o UUID apparentemente casuali ed è impossibile dire cosa dovrebbero essere dai dati che contengono. Questa è una situazione inevitabile per la nostra base di codice, purtroppo, poiché parte dello scopo che soddisfa è mappare i dati tra altri servizi senza necessariamente capire di cosa si tratta.
In JUnit, il assertThat
metodo fornisce una versione con un String reason
parametro prima del Matcher<T>
param. Ciò rende banale aggiungere una breve stringa di debug per far luce sul problema, ad esempio cosa dovrebbe significare il confronto per un essere umano.
AssertJ, d'altra parte, fornisce un miliardo di metodi genericistatic assertThat
diversi che restituiscono una qualche forma di interfaccia Assert o una delle sue numerose classi di implementazione. Questa interfaccia non fornisce un modo standard per impostare un messaggio personalizzato da includere negli errori.
C'è un modo per ottenere questa funzionalità dall'API di AssertJ o da una delle sue estensioni senza dover creare una classe di asserzione personalizzata per ogni tipo di asserzione a cui vogliamo aggiungere messaggi?
withFailMessage
materia; Mi piace AssertJ, ma fa schifo.