我们想断言自定义对象列表包含一个对象,其中某些字段具有某些值,并带有一系列断言,如下所示
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>
答案 0 :(得分:5)
Hamcrest在内部使用实现标准java.beans.PropertyDescriptor
行为的JavaBean
,允许is
仅用于布尔基元类型。
我担心你必须创建自己的Matcher
(类似于hasGetterValue)
答案 1 :(得分:1)
仅供参考:人们可以使用Hamcrest扩展shazamcrest及其sameBeanAs
(DiagnosingCustomisableMatcher
),即使对于Boolean
类型也能正常工作;)