Hamcrest fournit un certain nombre de correspondants pour affirmer le contenu d'une collection. Tous ces cas passent:
Collection<String> c = ImmutableList.of("one", "two", "three");
assertThat(c, hasItems("one", "two", "three");
assertThat(c, contains("one", "two", "three");
assertThat(c, containsInAnyOrder("one", "two", "three");
Comment hasItems
, contains
et containsInAnyOrder
diffèrent-ils?
des passages consécutifs sur le résultat Iterable examiné donnent au moins un élément égal à l’élément correspondant de la valeur spécifiée
items
.
Cela signifie que les collections contiennent au moins ces éléments dans n'importe quel ordre . Alors,
assertThat(c, hasItems("one", "two"));
passerait également, l’élément supplémentaire étant ignoré. Et:
assertThat(c, hasItems("three", "two", "one"));
passerait aussi.
un seul passage sur le
Iterable
examiné donne une série d'éléments, chacun logiquement égal à l'élément correspondant dans les éléments spécifiés. Pour une correspondance positive, l'itéré examiné doit être de la même longueur que le nombre d'éléments spécifiés.
Donc, il s'assure que la collection contient exactement ces éléments:
assertThat(c, contains("one", "two")); // Fails
Cela échouerait, car les restes "three"
ne correspond pas.
assertThat(c, contains("three", "two", "one")); // Fails
Cela échoue car les éléments correspondants ne correspondent pas.
Un autre élément lié, containsInAnyOrder
, vérifie que ces éléments sont exactement présents, mais dans n'importe quel ordre:
Crée un assembleur indépendant de l'ordre pour
Iterables
qui correspond lorsqu'un passage unique au-dessus deIterable
examiné donne une série d'éléments, chacun égal logiquement à un élément n'importe où dans les éléments spécifiés.
Un test avec un élément manquant échoue:
assertThat(c, containsInAnyOrder("one", "two")); // Fails
Mais tous les articles dans un ordre différent vont passer:
assertThat(c, containsInAnyOrder("three", "two", "one"));