hasItems
checks:
aufeinanderfolgende Durchläufe über die untersuchte Iterable Ausbeute mindestens ein Element, das zu dem entsprechenden Elemente aus den angegebenen items
gleich ist.
Das heißt, macht es sicher, dass die Sammlung enthält mindestens diese Elemente, in beliebiger Reihenfolge. Also,
assertThat(c, hasItems("one", "two"));
würde auch übergeben, mit dem zusätzlichen Element ignoriert werden. Und:
assertThat(c, hasItems("three", "two", "one"));
würde auch übergeben.
contains
checks:
ein einziger Durchgang über die untersuchten Iterable
eine Reihe von Elementen ergibt, die jeweils logisch gleich das entsprechende Element in den angegebenen Elementen. Für eine positive Übereinstimmung muss das untersuchte iterable die gleiche Länge wie die Anzahl der angegebenen Elemente haben.
So macht es sicher, dass die Sammlung enthält genau folgende Artikel:
assertThat(c, contains("one", "two")); // Fails
Dies würde scheitern, da die übrig gebliebenen "three"
nicht abgestimmt ist.
assertThat(c, contains("three", "two", "one")); // Fails
Dies schlägt fehl, weil die entsprechenden Elemente nicht übereinstimmen.
Ein anderes verwandtes Matcher, containsInAnyOrder
, checks, die genau diese Elemente vorhanden sind, sondern in jeder beliebigen Reihenfolge:
Erzeugt ein Auftrag agnostic Matcher für Iterables
, die übereinstimmt, wenn ein einziger Durchgang über die untersuchten Iterable
ergibt eine Reihe von Elemente, die jeweils logisch einem Element an den angegebenen Elementen entsprechen.
Ein Test mit einem fehlenden Punkt versagt:
assertThat(c, containsInAnyOrder("one", "two")); // Fails
Aber alle Artikel in einer anderen Reihenfolge vergehen:
assertThat(c, containsInAnyOrder("three", "two", "one"));