AssertJs Java 8-Funktionen

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.