Java 如何用Hamcrest断言一个通用整数列表?

Java 如何用Hamcrest断言一个通用整数列表?,java,testing,junit,matching,hamcrest,Java,Testing,Junit,Matching,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, has

我正在尝试将一个整数列表与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))));
List number=Arrays.asList(1,2,3,4,5);
资产((列表)编号,hasItem(hasProperty(“值”),为(1));
资产((列表)编号,hasItem(hasProperty(“值”),为(2));
资产((列表)编号,hasItem(hasProperty(“值”),为(3));
资产((列表)编号,hasItem(hasProperty(“值”),为(4));
资产((列表)编号,hasItem(hasProperty(“值”),为(5));

如果列表项的顺序无关紧要,请感谢:

assertThat(numbers, hasItems(1, 2, 3, 4, 5));
如果有:

assertThat(numbers, is(equalTo(Arrays.asList(1, 2, 3, 4, 5))));
如果集合不应包含其他元素,则还应检查大小:

assertThat(numbers, hasSize(5));
只用

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


顺序在这里并不重要。

要验证集合是否包含特定项目,请执行以下操作:

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))

你到底想断言什么?我不知道Hamcrest,但这看起来像是你想要java.lang.Integer有一个属性“value”(它没有)。@user465374:import static org.Hamcrest.matcherasert.assertThat;导入静态org.hamcrest.Matchers.hasItem;导入静态org.hamcrest.Matchers.hasItems;如果您想测试
numbers
是否只包含一组特定的项目,请确保除了执行此处描述的
hasItems
断言之外,还要断言列表的大小。@pholser这是一个很好的建议,我已将其包含在答案中。谢谢。还有其他匹配器结合检查大小和元素-见我的答案。
assertThat(numbers, containsInAnyOrder(5, 4, 3, 1, 2))