使用"的Hamcrest断言布尔字段是"前缀getter方法

时间:2015-10-07 08:48:46

标签: java junit hamcrest

我们想断言自定义对象列表包含一个对象,其中某些字段具有某些值,并带有一系列断言,如下所示

assertThat(customObjectList, hasItem(hasProperty("someField", equalTo(someValue))));

然而,自定义对象也有布尔类型字段,其中getter方法有一个"是"前缀而不是" get",并且断言似乎失败了

java.lang.AssertionError: Expected: a collection containing hasProperty("booleanField", <true>) but: property "booleanField" is not readable

是否有一个开箱即用的解决方案可以解决这个问题,或者应该使用某种自定义匹配器来处理它?<​​/ p>

2 个答案:

答案 0 :(得分:5)

Hamcrest在内部使用实现标准java.beans.PropertyDescriptor行为的JavaBean,允许is仅用于布尔基元类型。

我担心你必须创建自己的Matcher(类似于hasGetterValue)

答案 1 :(得分:1)

仅供参考:人们可以使用Hamcrest扩展shazamcrest及其sameBeanAsDiagnosingCustomisableMatcher),即使对于Boolean类型也能正常工作;)