Fonctionnalités Java 8 d’AssertJ

Fonctions d’AssertJ Java 8

1. Vue d'ensemble

Cet article se concentre sur les fonctionnalités liées à Java8 deAssertJ et est le troisième article de la série.

Si vous cherchez des informations générales sur ses principales fonctionnalités, jetez un œil au premier article de la sérieIntroduction to AssertJ puis àAssertJ for Guava.

2. Dépendances Maven

La prise en charge de Java 8 est incluse dans le module principal AssertJ Core depuis la version 3.5.1. Pour utiliser le module, vous devrez inclure la section suivante dans votre fichierpom.xml:


    org.assertj
    assertj-core
    3.5.1
    test

Cette dépendance ne couvre que les assertions Java de base. Si vous souhaitez utiliser les assertions avancées, vous devrez ajouter des modules supplémentaires séparément.

La dernière version de Core peut être trouvéehere.

3. Fonctionnalités de Java 8

AssertJ exploite les fonctionnalités de Java 8 en fournissant des méthodes d'assistance spéciales et de nouvelles assertions pour les types Java 8.

3.1. AssertionsOptional

Créons une simple instanceOptional:

Optional givenOptional = Optional.of("something");

Nous pouvons maintenant facilement vérifier si unOptional contient une valeur et quelle est cette valeur contenant:

assertThat(givenOptional)
  .isPresent()
  .hasValue("something");

3.2. AssertionsPredicate

Créons une simple instance dePredicate en vérifiant la longueur d'unString:

Predicate predicate = s -> s.length() > 4;

Vous pouvez maintenant vérifier facilement quelsString sont rejetés ou acceptés par lesPredicate:

assertThat(predicate)
  .accepts("aaaaa", "bbbbb")
  .rejects("a", "b")
  .acceptsAll(asList("aaaaa", "bbbbb"))
  .rejectsAll(asList("a", "b"));

3.3. AssertionsLocalDate

Commençons par définir deux objetsLocalDate:

LocalDate givenLocalDate = LocalDate.of(2016, 7, 8);
LocalDate todayDate = LocalDate.now();

Vous pouvez maintenant facilement vérifier si une date donnée est avant / après une date donnée, ou aujourd'hui:

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. AssertionsLocalDateTime

Les assertions deLocalDateTime fonctionnent de la même manière que celles deLocalDate _, _ mais ne partagent pas la méthodeisToday.

Créons un exemple d’objetLocalDateTime:

LocalDateTime givenLocalDate = LocalDateTime.of(2016, 7, 8, 12, 0);

Et maintenant, vous pouvez vérifier:

assertThat(givenLocalDate)
  .isBefore(LocalDateTime.of(2020, 7, 8, 11, 2));

3.5. AssertionsLocalTime

Les assertionsLocalTime fonctionnent de la même manière que les autres assertionsjava.util.time.*, mais elles ont une méthode exclusive:hasSameHourAs.

Créons un exemple d’objetLocalTime:

LocalTime givenLocalTime = LocalTime.of(12, 15);

et maintenant vous pouvez affirmer:

assertThat(givenLocalTime)
  .isAfter(LocalTime.of(1, 0))
  .hasSameHourAs(LocalTime.of(12, 0));

3.6. Méthode d'assistanceFlatExtracting

FlatExtracting est une méthode utilitaire spéciale qui utilise les lambdas de Java 8 pour extraire les propriétés des élémentsIterable.

Créons un simpleList avec des objetsLocalDate:

List givenList = asList(ofYearDay(2016, 5), ofYearDay(2015, 6));

maintenant nous pouvons facilement vérifier si ceList contient au moins un objetLocalDate avec l'année 2015:

assertThat(givenList)
  .flatExtracting(LocalDate::getYear)
  .contains(2015);

la méthodeflatExtracting ne nous limite pas à l'extraction de champ. Nous pouvons toujours lui fournir n'importe quelle fonction:

assertThat(givenList)
  .flatExtracting(LocalDate::isLeapYear)
  .contains(true);

ou même:

assertThat(givenList)
  .flatExtracting(Object::getClass)
  .contains(LocalDate.class);

Vous pouvez également extraire plusieurs propriétés à la fois:

assertThat(givenList)
  .flatExtracting(LocalDate::getYear, LocalDate::getDayOfMonth)
  .contains(2015, 6);

3.7. Méthode d'assistanceSatisfies

La méthodeSatisfies vous permet de vérifier rapidement si un objet satisfait toutes les assertions fournies.

Créons un exemple d’instanceString:

String givenString = "someString";

et maintenant nous pouvons fournir des assertions en tant que corps lambda:

assertThat(givenString)
  .satisfies(s -> {
    assertThat(s).isNotEmpty();
    assertThat(s).hasSize(10);
  });

3.8. Méthode d'assistanceHasOnlyOneElementSatisfying

La méthode d'assistanceHasOnlyOneElement permet de vérifier si une instance deIterable contient exactement un seul élément satisfaisant les assertions fournies.

Créons un exempleList:

List givenList = Arrays.asList("");

et maintenant vous pouvez affirmer:

assertThat(givenList)
  .hasOnlyOneElementSatisfying(s -> assertThat(s).isEmpty());

3.9. Méthode d'assistanceMatches

La méthode d'assistanceMatches permet de vérifier si un objet donné correspond à la fonctionPredicate donnée.

Prenons unString: vide

String emptyString = "";

et maintenant nous pouvons vérifier son état en fournissant une fonction lambdaPredicate adéquate:

assertThat(emptyString)
  .matches(String::isEmpty);

4. Conclusion

Dans ce dernier article de la série AssertJ, nous avons exploré toutes les fonctionnalités avancées d'AssertJ Java 8, ce qui conclut la série.

L'implémentation de tous les exemples et extraits de code peut être trouvée dans lesGitHub project.