带有 "is" 前缀 getter 方法的布尔字段的 Hamcrest 断言
Hamcrest assertion of boolean fields with an "is" prefix getter method
我们想断言一个自定义对象列表包含一个对象,该对象的某些字段具有特定值,具有像这样的一系列断言
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 在内部使用实现标准 JavaBean
行为的 java.beans.PropertyDescriptor
,允许 is
仅用于布尔原始类型。
恐怕您必须创建自己的 Matcher
(类似于 hasGetterValue)
仅供参考:可以使用 Hamcrest 扩展 shazamcrest,它是 sameBeanAs
(DiagnosingCustomisableMatcher
),即使对于 Boolean
类型也能正常工作 ;)
我们想断言一个自定义对象列表包含一个对象,该对象的某些字段具有特定值,具有像这样的一系列断言
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 在内部使用实现标准 JavaBean
行为的 java.beans.PropertyDescriptor
,允许 is
仅用于布尔原始类型。
恐怕您必须创建自己的 Matcher
(类似于 hasGetterValue)
仅供参考:可以使用 Hamcrest 扩展 shazamcrest,它是 sameBeanAs
(DiagnosingCustomisableMatcher
),即使对于 Boolean
类型也能正常工作 ;)