如何使用Hamcrest检查集合中是否包含给定顺序的项目
问题内容:
如果给定的集合中包含给定顺序的给定项目,如何使用Hamcrest进行检查?我尝试过,hasItems
但是它只是忽略了顺序。
List<String> list = Arrays.asList("foo", "bar", "boo");
assertThat(list, hasItems("foo", "boo"));
//I want this to fail, because the order is different than in "list"
assertThat(list, hasItems("boo", "foo"));
问题答案:
您可以改用contains
匹配器,但可能需要使用最新版本的Hamcrest。该方法检查顺序。
assertThat(list, contains("foo", "boo"));
containsInAnyOrder
如果订单对您来说没有关系,您也可以尝试使用。
这是contains
匹配器的代码:
public static <E> Matcher<Iterable<? extends E>> contains(List<Matcher<? super E>> itemMatchers)
{
return IsIterableContainingInOrder.contains(itemMatchers);
}