1. Введение
Эта кулинарная книга иллюстрирует, как использовать сопоставители Hamcrest для работы с коллекциями и их тестирования .
Формат поваренной книги ориентирован на примеры и практичен – никаких лишних деталей и объяснений не требуется.
Во-первых, давайте сделаем быстрый статический импорт, чтобы охватить большинство служебных API, которые мы собираемся использовать дальше:
import static org.hamcrest.Matchers.*;
2. Поваренная книга
проверить, находится ли один элемент в коллекции
List<String> collection = Lists.newArrayList("ab", "cd", "ef");
assertThat(collection, hasItem("cd"));
assertThat(collection, not(hasItem("zz")));
проверить, есть ли в коллекции несколько элементов
List<String> collection = Lists.newArrayList("ab", "cd", "ef");
assertThat(collection, hasItems("cd", "ef"));
**проверить все элементы в коллекции
**
- со строгим порядком
List<String> collection = Lists.newArrayList("ab", "cd", "ef");
assertThat(collection, contains("ab", "cd", "ef"));
- с любым заказом
List<String> collection = Lists.newArrayList("ab", "cd", "ef");
assertThat(collection, containsInAnyOrder("cd", "ab", "ef"));
проверить, пуста ли коллекция
List<String> collection = Lists.newArrayList();
assertThat(collection, empty());
проверить, пуст ли массив
String[] array = new String[] { "ab" };
assertThat(array, not(emptyArray()));
проверить, пуста ли карта
Map<String, String> collection = Maps.newHashMap();
assertThat(collection, equalTo(Collections.EMPTY_MAP));
проверить, пуст ли Iterable
Iterable<String> collection = Lists.newArrayList();
assertThat(collection, emptyIterable());
проверить размер коллекции
List<String> collection = Lists.newArrayList("ab", "cd", "ef");
assertThat(collection, hasSize(3));
проверка размера итерации
Iterable<String> collection = Lists.newArrayList("ab", "cd", "ef");
assertThat(collection, Matchers.<String> iterableWithSize(3));
проверить состояние каждого товара
List<Integer> collection = Lists.newArrayList(15, 20, 25, 30);
assertThat(collection, everyItem(greaterThan(10)));
3. Заключение
Этот формат является экспериментом — я публикую некоторые из моих внутренних кулинарных книг по разработке на заданную тему — Google Guava , а теперь и Hamcrest. Цель состоит в том, чтобы эта информация была легко доступна в Интернете и добавлялась к ней каждый раз, когда я сталкивался с новым полезным примером.
Реализацию всех этих примеров и фрагментов кода можно найти на GitHub — это проект на основе Maven, поэтому его легко импортировать и запускать как есть.