【问题标题】:How to compare lists excluding some items property using Hamcrest?如何使用 Hamcrest 比较不​​包括某些项目属性的列表?
【发布时间】:2021-11-30 14:30:01
【问题描述】:

尝试在不考虑某些元素字段的情况下比较两个列表,但找不到解决方案.. 我怎样才能用 Hamcrest 写这样的东西?

assertThat(list, containsInAnyOrder(anotherList).ignoreFields("accountNumber")); 

【问题讨论】:

标签: java hamcrest


【解决方案1】:

如果我理解正确,您想检查两个列表是否包含相同的元素。要检查元素是否相等,您需要按字段值比较元素。

如果是这样,您可以查看 Object 类的 equals(Object obj) and hashCode() 方法,这些方法应该用于检查对象是否相等 - 大多数库和框架都会调用此方法来检查对象“A”和对象“ B" 相等。

简短回答:首先,重写 equals(Object obj)hashCode() 方法来检查对象是否相等,或者添加一些自定义“比较器”函数/类来比较您的类型的对象。然后根据您在第一步中的选择使用containsInAnyOrder(T... items)containsInAnyOrder(Matcher<? super T>... itemMatchers) 方法。

plum

【讨论】:

  • 我需要使用 Hamcrest 测试框架进行检查,我不想修改列表项类
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-07
  • 1970-01-01
  • 1970-01-01
  • 2023-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多