Как утвердить общий список целых чисел с помощью Hamcrest?

Я пытаюсь сопоставить список целых чисел с Hamcrest, посмотрел несколько примеров в Интернете, однако получаю исключения во время выполнения.

Может кто-нибудь, пожалуйста, дайте мне знать, каков правильный синтаксис?

List<Integer> numbers = Arrays.asList( 1, 2, 3, 4, 5 );
assertThat((List<Object>) numbers, hasItem(hasProperty("value", is(1))));
assertThat((List<Object>) numbers, hasItem(hasProperty("value", is(2))));
assertThat((List<Object>) numbers, hasItem(hasProperty("value", is(3))));
assertThat((List<Object>) numbers, hasItem(hasProperty("value", is(4))));
assertThat((List<Object>) numbers, hasItem(hasProperty("value", is(5))));

Спасибо


person user465374    schedule 14.12.2012    source источник
comment
Что именно вы хотите утверждать?   -  person JB Nizet    schedule 14.12.2012
comment
Я не знаю Hamcrest, но похоже, что вы хотите, чтобы java.lang.Integer имел значение свойства (чего нет).   -  person Thilo    schedule 14.12.2012


Ответы (3)


Если порядок элементов списка не имеет значения:

assertThat(numbers, hasItems(1, 2, 3, 4, 5));

Если это так:

assertThat(numbers, is(equalTo(Arrays.asList(1, 2, 3, 4, 5))));

Если коллекция не должна включать другие элементы, также проверьте размер:

assertThat(numbers, hasSize(5));
person Christoph Leiter    schedule 14.12.2012
comment
Если вы хотите проверить, что numbers состоит только из определенного набора элементов, не забудьте утвердить размер списка в дополнение к описанному здесь утверждению hasItems. - person pholser; 14.12.2012
comment
@pholser Это хороший совет, я включил его в ответ. Спасибо. - person Christoph Leiter; 14.12.2012
comment
Есть и другие сопоставители, которые сочетают проверку размера и элементов — см. мой ответ. - person Kkkev; 15.12.2012

Просто используйте

assertThat(numbers, hasItem(1));
...

Or

assertThat(numbers, hasItems(1, 2, 3, 4, 5));

Порядок здесь не имеет значения.

person looper    schedule 14.12.2012
comment
@ user465374: импортировать статический org.hamcrest.MatcherAssert.assertThat; импортировать статический org.hamcrest.Matchers.hasItem; импортировать статические org.hamcrest.Matchers.hasItems; - person looper; 14.12.2012

Чтобы убедиться, что коллекция содержит определенный элемент:

assertThat(numbers, hasItem(3));

Чтобы убедиться, что коллекция содержит несколько элементов:

assertThat(numbers, hasItems(3, 4));

Чтобы убедиться, что коллекция содержит точно определенные элементы:

assertThat(numbers, contains(1, 2, 3, 4, 5))

Чтобы убедиться, что коллекция содержит определенные элементы, не заботясь о порядке:

assertThat(numbers, containsInAnyOrder(5, 4, 3, 1, 2))
person Kkkev    schedule 15.12.2012