Java 8-Funktionen von AssertJ
1. Überblick
Dieser Artikel konzentriert sich auf die Java8-bezogenen Funktionen vonAssertJund ist der dritte Artikel aus der Reihe.
Wenn Sie nach allgemeinen Informationen zu den Hauptfunktionen suchen, lesen Sie den ersten Artikel in der ReiheIntroduction to AssertJ und dannAssertJ for Guava.
2. Maven-Abhängigkeiten
Die Unterstützung von Java 8 ist seit Version 3.5.1 im Hauptmodul von AssertJ Core enthalten. Um das Modul verwenden zu können, müssen Sie den folgenden Abschnitt in Ihrepom.xml-Datei aufnehmen:
org.assertj
assertj-core
3.5.1
test
Diese Abhängigkeit deckt nur die grundlegenden Java-Zusicherungen ab. Wenn Sie die erweiterten Zusicherungen verwenden möchten, müssen Sie zusätzliche Module separat hinzufügen.
Die neueste Core-Version finden Sie inhere.
3. Java 8-Funktionen
AssertJ nutzt Java 8-Funktionen, indem es spezielle Hilfsmethoden und neue Zusicherungen für Java 8-Typen bereitstellt.
3.1. Optional Behauptungen
Erstellen wir eine einfacheOptional-Instanz:
Optional givenOptional = Optional.of("something");
Wir können jetzt leicht überprüfen, ob einOptional einen Wert enthält und was dieser Wert ist:
assertThat(givenOptional)
.isPresent()
.hasValue("something");
3.2. Predicate Behauptungen
Erstellen wir eine einfachePredicate-Instanz, indem wir die Länge vonString überprüfen:
Predicate predicate = s -> s.length() > 4;
Jetzt können Sie leicht überprüfen, welcheStrings von denPredicate: abgelehnt oder akzeptiert werden
assertThat(predicate)
.accepts("aaaaa", "bbbbb")
.rejects("a", "b")
.acceptsAll(asList("aaaaa", "bbbbb"))
.rejectsAll(asList("a", "b"));
3.3. LocalDate Behauptungen
Beginnen wir mit der Definition von zweiLocalDate-Objekten:
LocalDate givenLocalDate = LocalDate.of(2016, 7, 8);
LocalDate todayDate = LocalDate.now();
Sie können jetzt einfach überprüfen, ob ein bestimmtes Datum vor / nach einem bestimmten Datum oder heute liegt:
assertThat(givenLocalDate)
.isBefore(LocalDate.of(2020, 7, 8))
.isAfterOrEqualTo(LocalDate.of(1989, 7, 8));
assertThat(todayDate)
.isAfter(LocalDate.of(1989, 7, 8))
.isToday();
3.4. LocalDateTime Behauptungen
Die Zusicherungen vonLocalDateTimefunktionieren ähnlich wie die _, _ vonLocalDate, teilen jedoch nicht die Methode vonisToday.
Erstellen wir ein Beispielobjekt fürLocalDateTime:
LocalDateTime givenLocalDate = LocalDateTime.of(2016, 7, 8, 12, 0);
Und jetzt können Sie überprüfen:
assertThat(givenLocalDate)
.isBefore(LocalDateTime.of(2020, 7, 8, 11, 2));
3.5. LocalTime Behauptungen
Die Zusicherungen vonLocalTimefunktionieren ähnlich wie die Zusicherungen andererjava.util.time.*, haben jedoch eine exklusive Methode:hasSameHourAs.
Erstellen wir ein Beispielobjekt fürLocalTime:
LocalTime givenLocalTime = LocalTime.of(12, 15);
und jetzt können Sie behaupten:
assertThat(givenLocalTime)
.isAfter(LocalTime.of(1, 0))
.hasSameHourAs(LocalTime.of(12, 0));
3.6. FlatExtracting Hilfsmethode
FlatExtracting ist eine spezielle Dienstprogrammmethode, bei der die Lambdas von Java 8 verwendet werden, um Eigenschaften ausIterable Elementen. zu extrahieren
Erstellen wir ein einfachesList mitLocalDate Objekten:
List givenList = asList(ofYearDay(2016, 5), ofYearDay(2015, 6));
Jetzt können wir leicht überprüfen, ob diesesList mindestens einLocalDate Objekt mit dem Jahr 2015 enthält:
assertThat(givenList)
.flatExtracting(LocalDate::getYear)
.contains(2015);
Die MethodeflatExtractingbeschränkt uns nicht auf die Feldextraktion. Wir können es immer mit jeder Funktion versehen:
assertThat(givenList)
.flatExtracting(LocalDate::isLeapYear)
.contains(true);
oder auch:
assertThat(givenList)
.flatExtracting(Object::getClass)
.contains(LocalDate.class);
Sie können auch mehrere Eigenschaften gleichzeitig extrahieren:
assertThat(givenList)
.flatExtracting(LocalDate::getYear, LocalDate::getDayOfMonth)
.contains(2015, 6);
3.7. Satisfies Hilfsmethode
Mit der MethodeSatisfieskönnen Sie schnell überprüfen, ob ein Objekt alle angegebenen Zusicherungen erfüllt.
Erstellen wir eine Beispielinstanz vonString:
String givenString = "someString";
und jetzt können wir als Lambda-Körper Behauptungen aufstellen:
assertThat(givenString)
.satisfies(s -> {
assertThat(s).isNotEmpty();
assertThat(s).hasSize(10);
});
3.8. HasOnlyOneElementSatisfying Hilfsmethode
Mit der HilfsmethodeHasOnlyOneElement kann überprüft werden, ob eineIterable-Instanz genau nur ein Element enthält, das die angegebenen Aussagen erfüllt.
Erstellen wir ein BeispielList:
List givenList = Arrays.asList("");
und jetzt können Sie behaupten:
assertThat(givenList)
.hasOnlyOneElementSatisfying(s -> assertThat(s).isEmpty());
3.9. Matches Hilfsmethode
Mit der HilfsmethodeMatches kann überprüft werden, ob ein bestimmtes Objekt mit der angegebenen FunktionPredicateübereinstimmt.
Nehmen wir ein leeresString:
String emptyString = "";
und jetzt können wir den Zustand überprüfen, indem wir eine angemessene Lambda-Funktion vonPredicatebereitstellen:
assertThat(emptyString)
.matches(String::isEmpty);
4. Fazit
In diesem letzten Artikel aus der AssertJ-Reihe haben wir alle erweiterten Funktionen von AssertJ Java 8 untersucht, womit die Reihe abgeschlossen ist.
Die Implementierung aller Beispiele und Codefragmente finden Sie inGitHub project.