Wir haben eine Testsuite, die hauptsächlich JUnit-Assertions mit Hamcrest-Matchern verwendet. Einer aus unserem Team begann mit AssertJ zu experimentieren und beeindruckte die Leute mit seiner Syntax, Flexibilität und Deklaration. Es gibt eine Funktion, die JUnit bietet, für die ich in AssertJ keine Entsprechung finden kann: Hinzufügen einer benutzerdefinierten Assert-Fehlermeldung.Können Sie AssertJ assertThat eine benutzerdefinierte Nachricht hinzufügen?
Wir vergleichen oft Objekte, die nicht für die menschliche Lesbarkeit gemacht wurden und zufällige IDs oder UUIDs haben und es ist unmöglich zu sagen, was sie mit den darin enthaltenen Daten sagen sollen. Dies ist eine unvermeidliche Situation für unsere Codebasis, leider als Teil des Zwecks, den es erfüllt, Daten zwischen anderen Diensten abzubilden, ohne notwendigerweise zu verstehen, was es ist.
In JUnit bietet die assertThat
Methode eine Version mit einem String reason
Parameter vor dem Matcher<T>
Parameter. Dies macht es trivial, einen kurzen Debug-String hinzuzufügen, der etwas Licht auf das Problem wirft, wie zum Beispiel, was der Vergleich für einen Menschen bedeuten sollte.
AssertJ, auf der anderen Seite, bietet eine jillion verschiedene genericized static assertThat
Methoden, die eine Form von interface Assert oder eine der vielen implementierenden Klassen zurückgeben. Diese Schnittstelle bietet keine standardmäßige Möglichkeit zum Festlegen einer benutzerdefinierten Nachricht für Fehler.
Gibt es eine Möglichkeit, diese Funktionalität von der AssertJ API oder einer seiner Erweiterungen zu erhalten, ohne create a custom assert class for every assert type wir möchten Nachrichten hinzufügen?