AssertJ für Java: Das komplette Guide zu Fluent Assertions
1. Was ist AssertJ und warum braucht man es?
AssertJ ist eine leistungsstarke Bibliothek für Fluent Assertions in Java, die entwickelt wurde, um lesbare, ausdrucksstarke und selbstdokumentierende Tests zu schreiben. Im Gegensatz zu standardmäßigem JUnit oder TestNG, die nur grundlegende Methoden wie assertEquals(a, b) bieten, stellt AssertJ eine umfangreiche API mit Methodenverkettung bereit, die den Testcode wie natürliche Sprache aussehen lässt. Anstatt assertTrue(list.contains("foo")) zu schreiben, verwenden Sie assertThat(list).contains("foo").
Warum braucht man es? Erstens verbessert AssertJ die Lesbarkeit von Tests erheblich. Wenn ein Entwickler assertThat(result).isNotNull().hasSize(5).contains("expected") sieht, versteht er sofort, was geprüft wird: Das Ergebnis ist nicht null, die Größe ist 5 und es enthält den String "expected". Zweitens liefert AssertJ detaillierte Fehlermeldungen. Statt einer langweiligen Meldung wie "expected true but was false" erhalten Sie "Expected list to contain 'foo' but could not find it in [bar, baz]". Drittens unterstützt die Bibliothek viele Datentypen: Collections, Strings, Zahlen, Daten, Dateien, Exceptions und sogar benutzerdefinierte Objekte.
AssertJ ist besonders nützlich in Projekten, in denen die Wartbarkeit der Testbasis wichtig ist. Dank der Fluent-API werden Tests bei Refactoring weniger anfällig, da Methodenketten leicht modifiziert werden können. Die Bibliothek wird aktiv weiterentwickelt, hat eine hervorragende Dokumentation und wird in der Industrie weit verbreitet eingesetzt (Spring, Hibernate, Netflix u.a.).
2. Installation
AssertJ wird über Maven Central verteilt. Fügen Sie die Abhängigkeit in Ihre pom.xml (Maven) oder build.gradle (Gradle) ein, um die Bibliothek in Ihrem Projekt zu nutzen.
Maven
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.25.3</version> <!-- Prüfen Sie die aktuelle Version auf Maven Central -->
<scope>test</scope>
</dependency>
Gradle
testImplementation 'org.assertj:assertj-core:3.25.3'
Wenn Sie JUnit 5 verwenden, sind keine zusätzlichen Abhängigkeiten erforderlich. AssertJ funktioniert auch problemlos mit JUnit 4. Stellen Sie sicher, dass die AssertJ-Version mit Ihrer Java-Version kompatibel ist (3.x erfordert Java 8 oder höher).
3. Schnellstart – ein minimales Arbeitsbeispiel
Nachdem Sie die Abhängigkeit hinzugefügt haben, können Sie sofort mit AssertJ arbeiten. Die Hauptmethode ist assertThat(), die ein Objekt entgegennimmt und das entsprechende Assertion-Objekt zurückgibt.
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.jupiter.api.Test;
public class QuickStartTest {
@Test
void testSimpleAssertion() {
String name = "AssertJ";
// Basis-Assertion
assertThat(name)
.isNotNull()
.isNotEmpty()
.startsWith("Ass")
.endsWith("J")
.hasSize(7);
// Zahlen prüfen
int number = 42;
assertThat(number)
.isPositive()
.isGreaterThan(40)
.isLessThan(50);
// Collections prüfen
var list = java.util.List.of("a", "b", "c");
assertThat(list)
.hasSize(3)
.contains("a", "b")
.doesNotContain("z");
}
}
Dieses Beispiel zeigt die Kernidee: Eine Methodenkette, bei der jede Methode dasselbe Assertion-Objekt zurückgibt, sodass Sie aufeinanderfolgende Prüfungen schreiben können. Wenn eine Assertion fehlschlägt, schlägt der Test mit einer verständlichen Fehlermeldung fehl.
4. Wichtige Methoden/Funktionen/Klassen
AssertJ bietet hunderte von Methoden. Nachfolgend sind die 8 am häufigsten verwendeten mit Signaturen, Beschreibung und Beispielen aufgeführt.
4.1. isEqualTo
Auch in der Bibliothek
Kryptografie in Rust mit der RustCrypto-Bibliothek
SMS-Versand mit JavaScript (Node.js): API-Bibliotheken und Codebeispiele
ZXing für Kotlin: Vollständige Anleitung mit Beispielen
Autorisierung und Authentifizierung in PHP: Vollständiger Leitfaden mit Beispielen
Aufgabenwarteschlangen in Go: Überblick über Bibliotheken und Werkzeuge