对两个值的Hamcrest断言

时间:2016-06-12 20:47:20

标签: java hamcrest

我可以轻松地做出两个可能结果的断言:

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

1 个答案:

答案 0 :(得分:4)

你可以反过来写下断言:

assertThat(true, anyOf(is(result1), is(result2)))

result1result2不是true时,这仍会引发断言错误,并且该消息将告诉最终值或result1和{ {1}} ...在预期的部分,这使它有点尴尬。

从你的问题:

  

但是,我需要执行断言,我的一个结果等于某个值:

这意味着您的实际用例是确定结果列表是否具有给定值。这可以用以下方式清楚地表达:

result2

这是断言由两个结果形成的列表具有给定的项目。如果它没有,则断言错误将是:

assertThat(Arrays.asList(result1, result2), hasItem(true));

该消息告诉您集合中每个元素的值。