当前位置: 首页 > 知识库问答 >
问题:

滥用hamcrest hasItems

范书
2023-03-14

我有一个整数列表(当前),我想检查这个列表是否包含list expected中的所有元素,而不是list notExpected中的一个元素,因此代码如下所示:

    List<Integer> expected= new ArrayList<Integer>();
    expected.add(1);
    expected.add(2);

    List<Integer> notExpected = new ArrayList<Integer>();
    notExpected.add(3);
    notExpected.add(4);

    List<Integer> current = new ArrayList<Integer>();
    current.add(1);
    current.add(2);


    assertThat(current, not(hasItems(notExpected.toArray(new Integer[expected.size()]))));

    assertThat(current, (hasItems(expected.toArray(new Integer[expected.size()]))));

这么久这么好。但当我加上

    current.add(3);
    for (Integer i : notExpected)
        assertThat(current, not(hasItem(i)));

给了我正确的答案,但我认为我可以很容易地使用hamcrest匹配器。我使用的是junit 4.11和hamcrest 1.3

共有1个答案

钱德海
2023-03-14

hasitems(NotExpected...)仅在NotExpected中的所有元素也在Current中时才与Current匹配。所以用线

assertThat(current, not(hasItems(notExpected...)));

您断言current不包含notexpect中的所有元素。

断言current不包含notexpect中的任何元素的一个解决方案是:

assertThat(current, everyItem(not(isIn(notExpected))));
assertThat(current, everyItem(not(isOneOf(notExpected...))));

请注意,这些匹配器不是来自hamcrest-core中的corematchers,因此需要添加对hamcrest-library的依赖项。

<dependency>
    <groupId>org.hamcrest</groupId>
    <artifactId>hamcrest-library</artifactId>
    <version>1.3</version>
</dependency>
 类似资料:
  • 大家都知道英文中be动词+过去分词的组合,表示的是被动的意思,所以翻译时也多直接表达为“被xx”。一般情况下这样没有大问题,但我们再三说过,“条件反射式”的翻译,是翻译中的大忌。被动语态的处理也是如此,遇到被动语态就翻译为“被xx”,就会生出许多别扭,不信可以看下面几个句子: 我被邀请来参加这台晚会 这件事情被登上了报纸 此事被讨论之后 他被命令去执行任务 这本书被许多人高度评价 在这几个句子中,

  • 问题内容: 我想向Redis 发送一个消息,以检查连接是否正常工作,现在我可以安装了,但我现在不想安装了。那么我该如何滥用呢?基本上,我需要关闭此处发送的内容: 通过添加,我可以完全摆脱它,但是我找不到其他的东西。知道我该怎么做吗? 问题答案: 当您想使用curl时,您需要基于RESP的REST,例如webdis,tinywebdis或turbowebdis。参见https://github.co

  • 问题内容: 没有多少人知道此功能,但是Python的函数(和方法)可以具有attribute。看哪: Python中此功能的可能用法和滥用是什么?我知道的一个很好的用法是PLY使用docstring将语法规则与方法相关联。但是自定义属性呢?是否有充分的理由使用它们? 问题答案: 我通常使用函数属性作为注释的存储。假设我想以C#的方式编写(表示某种方法应该成为Web服务接口的一部分) 然后我可以定义

  • 首先,让我确保这不是以下问题的重复so:确保仅从iPhone访问 简而言之,我有一个应用程序使后端查找。在开发它时,我对数据使用了AES-256加密,这样只有应用程序可以读取来自后端的响应,即对来自服务器的JSON进行了加密。 在发布应用的时候,iOS发布流程说“没有证书(我猜这真的很难得到),你的应用中不能有任何类型的加密,除非是为了用户身份验证,那就OK了”。 这就不符合我的策略,坦率地说,也

  • 问题内容: 较少使用运算符来增强嵌套]的可能性。 这会导致用父选择器替换,并导致实际选择器的权利与父选择器相结合:而不是常规附加,这将导致后代:。 现在,还可以执行以下操作: 这将导致以下结果:在此处尝试。发生替换,并且我在父选择器之前 添加 了一个选择器()。 除了我永远不会以这种方式编写代码这一事实之外,因为这可能会立即使您的样式表混乱,我的问题是: 由于未记录此功能,因此它是功能还是更可能是

  • 本文向大家介绍为什么说cookie不可以滥用?相关面试题,主要包含被问及为什么说cookie不可以滥用?时的应答技巧和注意事项,需要的朋友参考一下 1.安全问题 2.每次请求都会携带cookie,占内存,影响带宽 3.不能跨域 4.可储存的内容少