- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Hamcrest 提供了许多匹配器来断言集合的内容。所有这些情况都通过:
Collection<String> c = ImmutableList.of("one", "two", "three");
assertThat(c, hasItems("one", "two", "three");
assertThat(c, contains("one", "two", "three");
assertThat(c, containsInAnyOrder("one", "two", "three");
hasItems
、contains
和 containsInAnyOrder
有何不同?
最佳答案
consecutive passes over the examined Iterable yield at least one item that is equal to the corresponding item from the specified
items
.
也就是说,它确保集合至少包含这些项目,以任何顺序。所以,
assertThat(c, hasItems("one", "two"));
也会通过,但额外的项目将被忽略。并且:
assertThat(c, hasItems("three", "two", "one"));
也会通过。
a single pass over the examined
Iterable
yields a series of items, each logically equal to the corresponding item in the specified items. For a positive match, the examined iterable must be of the same length as the number of specified items.
因此它确保集合恰好包含这些项目:
assertThat(c, contains("one", "two")); // Fails
这会失败,因为剩余的“三”
不匹配。
assertThat(c, contains("three", "two", "one")); // Fails
此操作失败,因为相应的项目不匹配。
另一个相关匹配器,containsInAnyOrder
,checks这些项目确实存在,但顺序不限:
Creates an order agnostic matcher for
Iterables
that matches when a single pass over the examinedIterable
yields a series of items, each logically equal to one item anywhere in the specified items.
缺少项目的测试失败:
assertThat(c, containsInAnyOrder("one", "two")); // Fails
但是不同顺序的所有项目都会通过:
assertThat(c, containsInAnyOrder("three", "two", "one"));
关于hamcrest - Hamcrest 的 hasItems、contains 和 containsInAnyOrder 有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33840531/
我看到了这个post assertThat( myClass.getMyItems(), contains( hasProperty("foo", is("bar")), hasPro
我有一个整数列表(当前),我想检查这个列表是否包含预期列表中的所有元素,甚至不包含列表 notExpected 中的一个元素,所以代码如下: List expected= new ArrayL
我已经绝望了,我不明白为什么这个测试没有被评估为成功。我已经检查过一百万次了: package someptest; import static org.hamcrest.MatcherAssert.
我遇到了 hamcrest 和mockito 的问题。这是我正在尝试做的事情: public class A{ public void foo(List arg){ re
我想测试我的 Controller 并使用以下方法来测试它: package spittr.web; import static org.springframework.test.web.servle
如何使用 Hamcrest 中的 TestNG 和 hasItem 匹配空集合?这是我通过一项测试得到的结果。 java.lang.AssertionError: Expected: a collec
我目前正在测试 hasItem() Matcher 但无济于事。请参阅下面的示例代码: List list = new ArrayList(); list.add("1"); list.add("2"
我刚刚创建了一个虚拟 Maven 项目: 4.0.0 com.loki2302 junit-test-app 0.0.1-SNAPSHOT jar j
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.hasItem; im
为什么编译不出来啊,怎么办? import static org.junit.Assert.assertThat; import static org.junit.matchers.JUnitMatc
我看到了这个post 关于两者的区别: Matchers.hasItem(..) Assert.assertThat(items, Matchers.hasItem(Matchers.hasToStr
我想使用 Hamcrest 的 hasItems带有一个“实际”集合,即 ArrayList在 assertThat(ArrayList, hasItems(InstanceOfSomeInterfa
Hamcrest 提供了许多匹配器来断言集合的内容。所有这些情况都通过: Collection c = ImmutableList.of("one", "two", "three"); assertT
我是一名优秀的程序员,十分优秀!