jUnit - 如何断言一个值不等于另一个值

时间:2017-05-29 18:14:03

标签: java junit

我使用 hamcrest 库来测试代码,我想声明实际值(第一个参数)不等于2个指定值(" bad&# 34;和" good"在equalTo方法中。如果实际值(assertThat方法的第一个参数)不等于" good"它应该通过测试。而不是等于"坏"。 所以我尝试了以下声明:

 @Test
public void valueNotEqualToBoth() {
    assertThat("good", not(allOf(equalTo("bad"), equalTo("good"))));
}

但事实证明它通过了测试,但我除外的是它不应该。因为第一个参数等于"好"。

3 个答案:

答案 0 :(得分:5)

根据您的问题,您不希望提供的值在预设值列表中吗?

如果这是您想要的,那么您使用了错误的断言组合。

assertThat("good", not(anyOf(equalTo("good"), equalTo("bad")));

上面的代码将告诉您assertThat中的第一个参数是否与第二组匹配器中的任何匹配器不匹配。

新断言的解释如下:

  1. 这将检查提供的值是否为" good"匹配任何值" good"或者"坏" (anyOf matcher)
  2. 它将反转该匹配的结果,因此true变为false,false变为true(不匹配)
  3. 如果匹配器导致不为真,它将抛出AssertionException,因此如果它是任何在步骤1中提供的匹配器,则抛出异常。

答案 1 :(得分:1)

简单:只需确保实际值(转换为单元素集)不包含在某些预期集合中。

html {
   background-color:#00BD9C;
}

答案 2 :(得分:0)

如果我理解你的问题,就像是

assertEquals("good", !somethingToTest.equals("bad") && !somethingToTest.equals("good"));