我可以轻松地做出两个可能结果的断言:
assertThat(result, anyOf(true, false)); // just a sample, doesn't make sense as an assertion
但是,我需要执行断言,我的一个结果等于某个值:
assertThat(result1 || result2, is(true));
上述方法有效,但错误消息并未说明哪个结果为false
。在Hamcrest有类似的东西吗?
assertThat(anyOf(result1, result2), is(true)); // just a hypothetical assertion
答案 0 :(得分:4)
你可以反过来写下断言:
assertThat(true, anyOf(is(result1), is(result2)))
当result1
或result2
不是true
时,这仍会引发断言错误,并且该消息将告诉最终值或result1
和{ {1}} ...在预期的部分,这使它有点尴尬。
从你的问题:
但是,我需要执行断言,我的一个结果等于某个值:
这意味着您的实际用例是确定结果列表是否具有给定值。这可以用以下方式清楚地表达:
result2
这是断言由两个结果形成的列表具有给定的项目。如果它没有,则断言错误将是:
assertThat(Arrays.asList(result1, result2), hasItem(true));
该消息告诉您集合中每个元素的值。