当前位置: 首页 > 面试题库 >

如何使用Hamcrest检查集合中是否包含给定顺序的项目

米承嗣
2023-03-14
问题内容

如果给定的集合中包含给定顺序的给定项目,如何使用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);
  }


 类似资料:
  • 本文向大家介绍检查Java ArrayList是否包含给定项,包括了检查Java ArrayList是否包含给定项的使用技巧和注意事项,需要的朋友参考一下 java.util.ArrayList.contains()方法可用于检查Java ArrayList是否包含给定项。此方法具有单个参数,即测试了其在ArrayList中是否存在的项目。如果该项目在ArrayList中存在,则返回true;如果

  • 问题内容: 我有一组话要说-苹果,橙子,梨,香蕉,猕猴桃 我想检查一个句子是否包含上面列出的任何单词,如果包含,我想找到匹配的单词。我如何在Regex中完成此操作? 我目前正在为每个单词集调用String.indexOf()。我假设这不如正则表达式匹配有效? 问题答案: TL; DR 对于简单的子字符串最好,但对于仅匹配整个单词的正则表达式可能更好。 查看哪种方法更有效的最佳方法是对其进行测试。

  • 问题内容: 我想找到在其标签集中包含 所有 给定标签的项目。 以下是简化的类: 如果我这样尝试 我得到包含 任何 给定标签的项目。这不足为奇,但我希望包含 所有 给定标签的项目。所以我尝试另一种方式: 我收到错误消息。如果仅包含一个标签,它将起作用,但失败的原因不止于此。 如何在JPQL中表达呢? 问题答案: 诀窍是使用计数:

  • 问题内容: 我想找到在其标签集中包含 所有 给定标签的项目。 以下是简化的类: 如果我这样尝试 我得到包含 任何 给定标签的项目。这不足为奇,但我希望包含 所有 给定标签的项目。所以我尝试另一种方式: 我收到错误消息。如果仅包含一个标签,它将起作用,但失败的原因不止于此。 如何在JPQL中表达呢? 问题答案: 诀窍是使用计数:

  • 我最近一直在使用Hamcrest库编写一些测试,非常成功,但现在我需要做一些更复杂的事情,并开始看到很多困难。我需要输入并验证地图中项目的属性。我的生产代码如下所示: 我想写一些像下面这样的测试代码,但是它不编译。看起来Hamcrest的hasEntry是类型参数化的,而hasItem和hasProperty只需要Object。 我的IDE(Eclipse)给出了这个错误消息:参数化方法

  • 本文向大家介绍检查Java HashSet集合是否包含另一个Collection,包括了检查Java HashSet集合是否包含另一个Collection的使用技巧和注意事项,需要的朋友参考一下 若要检查HashSet是否包含另一个,请使用方法。 设置第一个HashSet 设置第二个HashSet 现在检查 以下是检查Java中的HashSet集合是否包含另一个Collection的示例 示例 以