我们想声明一个自定义对象列表包含一个对象,其中某些字段具有某些值,并带有一系列断言,如下所示
assertThat(customObjectList, hasItem(hasProperty("someField", equalTo(someValue))));
但是自定义对象也有布尔类型字段,其中getter方法有一个“is”前缀而不是“get”,并且断言似乎失败了
java.lang.AssertionError: Expected: a collection containing hasProperty("booleanField", <true>) but: property "booleanField" is not readable
是否有一个开箱即用的解决方案来解决这个问题,或者它应该用某种自定义匹配器来处理?
Hamcrest在内部使用实现标准java.beans.PropertyDescriptor
行为的JavaBean
,允许is
仅用于布尔基元类型。
我担心你将不得不创建自己的Matcher
(类似于hasGetterValue)
仅供参考:人们可以使用Hamcrest扩展shazamcrest和它的sameBeanAs
(DiagnosingCustomisableMatcher
),即使对于Boolean
类型也能正常工作;)