我使用 hamcrest 库来测试代码,我想声明实际值(第一个参数)不等于2个指定值(" bad&# 34;和" good"在equalTo方法中。如果实际值(assertThat方法的第一个参数)不等于" good"它应该通过测试。而不是等于"坏"。 所以我尝试了以下声明:
@Test
public void valueNotEqualToBoth() {
assertThat("good", not(allOf(equalTo("bad"), equalTo("good"))));
}
但事实证明它通过了测试,但我除外的是它不应该。因为第一个参数等于"好"。
答案 0 :(得分:5)
根据您的问题,您不希望提供的值在预设值列表中吗?
如果这是您想要的,那么您使用了错误的断言组合。
assertThat("good", not(anyOf(equalTo("good"), equalTo("bad")));
上面的代码将告诉您assertThat中的第一个参数是否与第二组匹配器中的任何匹配器不匹配。
新断言的解释如下:
答案 1 :(得分:1)
简单:只需确保实际值(转换为单元素集)不包含在某些预期集合中。
html {
background-color:#00BD9C;
}
答案 2 :(得分:0)
如果我理解你的问题,就像是
assertEquals("good", !somethingToTest.equals("bad") && !somethingToTest.equals("good"));