我们有一个自定义类,其中包含几个字段。由于业务领域的原因,我们无法覆盖equals/hashcode方法。然而,在单元测试期间,我们应该断言集合中是否包含此类的项。
有没有不需要逐个字段比较的解决方案?
List<CustomClass> customObjectList = classUnderTest.methodUnderTest();
//create customObject with fields set to the very same values as one of the elements in customObjectList
//we should assert here that customObjectList contains customObject
然而,到目前为止,我们还没有找到任何不需要重写equals/hashcode的解决方案,例如Hamcrest。
assertThat(customObjectList, contains(customObject));
导致断言错误的结果引用
Expected: iterable containing [<CustomClass@578486a3>]
but: item 0: was <CustomClass@551aa95a>
有没有不需要逐个字段比较的解决方案?
anyMatch
需要一个谓词。修复后,filter
就变得过时了:customObjectList.stream().anyMatch(object -> customEquals(object,customObject))
- Holger