Java 关于两个值的Hamcrest断言

Java 关于两个值的Hamcrest断言,java,hamcrest,Java,Hamcrest,我可以很容易地用两种可能的结果进行断言: assertThat(result, anyOf(true, false)); // just a sample, doesn't make sense as an assertion 但是,我需要执行一个断言,即我的一个结果等于某个值: assertThat(result1 || result2, is(true)); 上述方法可行,但错误消息没有说明哪个结果是false。汉克雷斯特有没有类似的东西 assertThat(anyOf(result1

我可以很容易地用两种可能的结果进行断言:

assertThat(result, anyOf(true, false)); // just a sample, doesn't make sense as an assertion
但是,我需要执行一个断言,即我的一个结果等于某个值:

assertThat(result1 || result2, is(true));
上述方法可行,但错误消息没有说明哪个结果是
false
。汉克雷斯特有没有类似的东西

assertThat(anyOf(result1, result2), is(true)); // just a hypothetical assertion

您可以反向编写断言:

assertThat(true, anyOf(is(result1), is(result2)))
result1
result2
不是
true
时,这仍然会引发断言错误,并且消息将告诉最终值或
result1
result2
。。。在预期的部分,这使它有点尴尬


根据你的问题:

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

assertThat(result1 || result2, is(true));
这意味着您的实际用例正在确定结果列表是否具有给定值。这可以通过以下方式清楚地表达:

assertThat(Arrays.asList(result1, result2), hasItem(true));
这是在断言由这两个结果组成的列表具有给定的项。否则,断言错误将为:

应为:包含
但是:过去是,过去是

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

您可以反向编写断言:

assertThat(true, anyOf(is(result1), is(result2)))
result1
result2
不是
true
时,这仍然会引发断言错误,并且消息将告诉最终值或
result1
result2
。。。在预期的部分,这使它有点尴尬


根据你的问题:

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

assertThat(result1 || result2, is(true));
这意味着您的实际用例正在确定结果列表是否具有给定值。这可以通过以下方式清楚地表达:

assertThat(Arrays.asList(result1, result2), hasItem(true));
这是在断言由这两个结果组成的列表具有给定的项。否则,断言错误将为:

应为:包含
但是:过去是,过去是

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

assertTrue(result1 | | result2)有什么问题。如果断言失败,则result1和result2都为false。你不需要任何特殊的东西来推断它。assertTrue(result1 | | result2)有什么问题。如果断言失败,则result1和result2都为false。你不需要任何特别的东西来推断。