Hamcrest使用“is”前缀getter方法断言布尔字段

问题描述 投票:5回答:2

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

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

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

java junit hamcrest
2个回答
5
投票

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

我担心你将不得不创建自己的Matcher(类似于hasGetterValue)


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.