我可以很容易地用两种可能的结果进行断言:
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
您可以反向编写断言:
assertThat(true, anyOf(is(result1), is(result2)))
当result1
或result2
不是true
时,这仍然会引发断言错误,并且消息将告诉最终值或result1
和result2
。。。在预期的部分,这使它有点尴尬。
从你的问题:
但是,我需要执行断言,我的结果之一等于一些值:
这意味着您的实际用例正在确定结果列表是否具有给定值。这可以通过以下方式清楚地表达:
assertThat(Arrays.asList(result1, result2), hasItem(true));
这是断言由两个结果组成的列表具有给定的项。如果没有,断言错误将是:
Expected: a collection containing <true>
but: was <false>, was <false>
该消息告诉您集合中每个元素的值。
有没有Hamcrest可以让我明确断言,返回对象的的方法的结果至少有一个对象包含具有特定值的属性? 例如: 测试下的方法返回一个的集合。我需要断言至少有一个人叫彼得。
我对使用hamcrest进行资产评估还很陌生,而且我已经有一个非常糟糕的案例需要测试。 我们有2个不同的自定义对象的数组列表:FilterItem和MyEnum。两者都包含一个属性——比方说“值”——单元测试要传递的属性应该相等。因为对象是不同的,所以我不能简单地断言它们包含的值,这使得断言更加困难。 在每个我想断言的单元测试中,我都将断言逻辑提取到一个新方法中,如下所示: 单元测试现在都通过了,
我如何断言某个东西是? 举个例子 但是我得到一个错误,告诉我在中不能有。
问题内容: 如何将我的东西是? 例如 但是我收到一个错误消息,说我不能进入。 问题答案: 您可以使用方法:
其中 actual 是 ID 为 Long 的 POJO。 我明白了, 方法 assertThat(T, Matcher 从各种文档和其他stackoverflow页面来看,它应该是有效的,但我得到了上述错误。