AssertJ pour Goyave

AssertJ pour Goyave

1. Vue d'ensemble

Cet article se concentre sur les assertions liées àAssertJ Guava et est le deuxième article de la série AssertJ. Si vous voulez des informations générales sur AssertJ, jetez un œil au premier article de la sérieIntroduction to AssertJ.

2. Dépendances Maven

Pour utiliser AssertJ avec Guava, vous devez ajouter la dépendance suivante à vospom.xml:


    org.assertj
    assertj-guava
    3.0.0
    test

Vous pouvez trouver la dernière versionhere.

Et notez que depuis la version 3.0.0,AssertJ Guava s'appuie surJava 8 etAssertJ Core 3.x.

3. Les affirmations de goyave en action

AssertJ a des assertions personnalisées pour les types de goyave:ByteSource,Multimap,Optional,Range,RangeMap etTable.

3.1. AssertionsByteSource

Commençons par créer deux fichiers temporaires vides:

File temp1 = File.createTempFile("bael", "dung1");
File temp2 = File.createTempFile("bael", "dung2");

et en créant des instancesByteSource à partir d'elles:

ByteSource byteSource1 = Files.asByteSource(temp1);
ByteSource byteSource2 = Files.asByteSource(temp2);

Nous pouvons maintenant écrire l'assertion suivante:

assertThat(buteSource1)
  .hasSize(0)
  .hasSameContentAs(byteSource2);

3.2. Multimap Assertions

LesMultimaps sont des cartes qui peuvent associer plus d'une valeur à une clé donnée. Les assertions deMultimap fonctionnent de manière assez similaire aux implémentations normales deMap.

Commençons par créer une instanceMultimap et ajouter quelques entrées:

Multimap mmap = Multimaps
  .newMultimap(new HashMap<>(), Sets::newHashSet);
mmap.put(1, "one");
mmap.put(1, "1");

Et maintenant nous pouvons affirmer:

assertThat(mmap)
  .hasSize(2)
  .containsKeys(1)
  .contains(entry(1, "one"))
  .contains(entry(1, "1"));

Deux autres assertions sont également disponibles - avec une différence subtile entre elles:

  • containsAllEntriesOf et

  • hasSameEntriesAs.

Jetons un œil à ces deux affirmations; nous allons commencer par définir quelques cartes:

Multimap mmap1 = ArrayListMultimap.create();
mmap1.put(1, "one");
mmap1.put(1, "1");
mmap1.put(2, "two");
mmap1.put(2, "2");

Multimap mmap1_clone = Multimaps
  .newSetMultimap(new HashMap<>(), HashSet::new);
mmap1_clone.put(1, "one");
mmap1_clone.put(1, "1");
mmap1_clone.put(2, "two");
mmap1_clone.put(2, "2");

Multimap mmap2 = Multimaps
  .newSetMultimap(new HashMap<>(), HashSet::new);
mmap2.put(1, "one");
mmap2.put(1, "1");

Comme vous pouvez le voir,mmap1 etmmap1_clone contiennent exactement les mêmes entrées, mais sont deux objets différents de deux typesMap différents. LeMap mmap2 contient une seule entrée qui est partagée entre toutes les cartes. Maintenant, l'assertion suivante est vraie:

assertThat(mmap1)
  .containsAllEntriesOf(mmap2)
  .containsAllEntriesOf(mmap1_clone)
  .hasSameEntriesAs(mmap1_clone);

3.3. Optional Assertions

Les assertions pour lesOptionalde Guava impliquent une vérification de présence de valeur et des utilitaires pour extraire la valeur interne.

Commençons par créer une instanceOptional:

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

Et maintenant, nous pouvons vérifier la présence de la valeur et affirmer le contenu deOptional:

assertThat(something)
  .isPresent()
  .extractingValue()
  .isEqualTo("something");

3.4. Range Assertions

Les assertions pour la classeRange de Guava impliquent de vérifier les limites inférieure et supérieure deRange ou si une certaine valeur se situe dans une plage donnée.

Définissons une plage de caractères simple en procédant comme suit:

Range range = Range.openClosed("a", "g");

et maintenant nous pouvons tester:

assertThat(range)
  .hasOpenedLowerBound()
  .isNotEmpty()
  .hasClosedUpperBound()
  .contains("b");

3.5. Table Assertions

Les assertions spécifiques à la table d'AssertJ permettent de vérifier le nombre de lignes et de colonnes et la présence d'une valeur de cellule.

Créons une simple instanceTable:

Table table = HashBasedTable.create(2, 2);
table.put(1, "A", "PRESENT");
table.put(1, "B", "ABSENT");

et maintenant nous pouvons effectuer le contrôle suivant:

assertThat(table)
  .hasRowCount(1)
  .containsValues("ABSENT")
  .containsCell(1, "B", "ABSENT");

4. Conclusion

Dans cet article de la série AssertJ, nous avons exploré toutes les fonctionnalités liées à la goyave.

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