Привет! В рамках серии Java collection я решил написать этот небольшой пост, чтобы перечислить некоторые из наиболее распространенных методов утверждения из AssertJ, которые можно использовать для тестирования коллекций Java.
Общие утверждения коллекции
В этом разделе представлены наиболее распространенные утверждения , используемые с коллекциями Java. Примеры иллюстрируются с использованием списков на основе массивов |/, которые являются наиболее часто используемыми структурами данных Java.
Коллекция содержит элемент
Основная ситуация заключается в том, чтобы проверить, содержит или не содержит коллекция определенный элемент. AssertJ проверяет это с помощью contains() / doesNotContain() элемент, который имеет перегруженные версии:
- содержит(E e, индекс int) что элемент представлен в определенной позиции
- содержит(E… элементы) переменные, например, один или несколько элементов, и проверяет их наличие в любой заказ
Взгляните на приведенный ниже фрагмент кода:
@Test public void containsElementTest(){ Listnumbers = Lists.newArrayList(1, 52, 12, 39, 45, 98, 100, 565, 6, 13); assertThat(numbers).contains(12); assertThat(numbers).doesNotContain(50); }
Коллекция содержит элементы в любом порядке
Для того, чтобы проверить, что коллекция содержит группу элементов, можно использовать два сценария:
- Используйте содержит(например, элементы)/| метод и поставляйте элементы в качестве переменных Использовать
- содержит(повторяемый i) метод, который принимает другую коллекцию и проверяет, что все элементы содержатся внутри исходной в любой заказ
Вот пример использования содержит все() :
@Test public void containsAllElementsNoMatterOrderTest(){ Listnumbers = Lists.newArrayList(1, 52, 12, 39, 45, 98, 100, 565, 6, 13); List values = Lists.newArrayList(52, 39, 12, 1, 100); assertThat(numbers).containsAll(values); }
Коллекция содержит элементы в определенном порядке
Другой случай – проверить, что коллекция содержит не только все указанные элементы, но и сохраняет определенный порядок . Для этого можно использовать содержит Ровно элементы метода() . Он принимает iterable и проверяет, что фактическая коллекция содержит все элементы данного iterable и ничего больше в том же порядке .
Взгляните на следующий пример:
@Test public void containsAllElementsInOrderTest(){ Listnumbers = Lists.newArrayList(1, 52, 12, 39, 45, 98, 100, 565, 6, 13); List values = Lists.newArrayList(numbers); assertThat(numbers).containsExactlyElementsOf(values); }
Коллекция не содержит дубликатов
Не все Коллекции Java допускают дубликаты: наборы, например, проверяют наличие вставленных элементов и не допускают дубликатов. Другие коллекции, такие как списки, не предлагают такой функциональности. В этом случае, когда вам нужно подтвердить, что в коллекции нет повторяющихся элементов, рекомендуется использовать метод doesNotHaveDuplicates() :
@Test public void noDuplicatesTest(){ Listnumbers = Lists.newArrayList(1, 52, 12, 39, 45, 98, 100, 565, 6, 13); assertThat(numbers).doesNotHaveDuplicates(); }
Коллекция содержит элемент только один раз
Расширенный вариант последней ситуации состоит в том, чтобы проверить, что элемент представлен только один раз . Технически, метод contains() допускает дублирование объектов, поэтому, чтобы проверить, что элемент не повторяется, используйте contains Только один раз() утверждение.
Обратите внимание на приведенный ниже фрагмент кода:
@Test public void containsOnlyOnceTest(){ Listnumbers = Lists.newArrayList(1, 1, 52, 12, 12, 45, 45); assertThat(numbers).containsOnlyOnce(52); }
Исходный код
Вы можете найти полный исходный код для этого поста в этом репозитории github . Если у вас есть вопросы относительно этого поста, не стесняйтесь обращаться ко мне. Хорошего дня!
Оригинал: “https://dev.to/iuriimednikov/common-assertions-for-java-collections-in-assertj-4h3g”