Hamcrest Collections Cookbook

1. Introduzione

Questo libro di cucina illustra come utilizzare gli abbinamenti Hamcrest per lavorare e testare le raccolte .

Il formato del ricettario è incentrato sull'esempio e pratico, non sono necessari dettagli e spiegazioni estranee.

Innanzitutto, eseguiamo una rapida importazione statica per coprire la maggior parte delle API di utilità che utilizzeremo in seguito:

import static org.hamcrest.Matchers.*;

2. Il ricettario

controlla se un singolo elemento è in una raccolta

List collection = Lists.newArrayList("ab", "cd", "ef"); assertThat(collection, hasItem("cd")); assertThat(collection, not(hasItem("zz")));

controlla se più elementi sono in una raccolta

List collection = Lists.newArrayList("ab", "cd", "ef"); assertThat(collection, hasItems("cd", "ef"));

controlla tutti gli elementi in una raccolta

- con rigoroso ordine

List collection = Lists.newArrayList("ab", "cd", "ef"); assertThat(collection, contains("ab", "cd", "ef"));

- con qualsiasi ordine

List collection = Lists.newArrayList("ab", "cd", "ef"); assertThat(collection, containsInAnyOrder("cd", "ab", "ef"));

controlla se la raccolta è vuota

List collection = Lists.newArrayList(); assertThat(collection, empty());

controlla se l'array è vuoto

String[] array = new String[] { "ab" }; assertThat(array, not(emptyArray()));

controlla se la mappa è vuota

Map collection = Maps.newHashMap(); assertThat(collection, equalTo(Collections.EMPTY_MAP));

controlla se Iterable è vuoto

Iterable collection = Lists.newArrayList(); assertThat(collection, emptyIterable());

controlla le dimensioni di una collezione

List collection = Lists.newArrayList("ab", "cd", "ef"); assertThat(collection, hasSize(3));

controllo delle dimensioni di un iterabile

Iterable collection = Lists.newArrayList("ab", "cd", "ef"); assertThat(collection, Matchers. iterableWithSize(3));

controllare le condizioni su ogni articolo

List collection = Lists.newArrayList(15, 20, 25, 30); assertThat(collection, everyItem(greaterThan(10)));

3. Conclusione

Questo formato è un esperimento: sto pubblicando alcuni dei miei libri di cucina di sviluppo interni su un determinato argomento: Google Guava e ora Hamcrest. L'obiettivo è avere queste informazioni prontamente disponibili online e aggiungerle ogni volta che mi imbatto in un nuovo esempio utile.

L'implementazione di tutti questi esempi e frammenti di codice può essere trovata su GitHub : questo è un progetto basato su Maven, quindi dovrebbe essere facile da importare ed eseguire così com'è.