【问题标题】:using AssertJ usingComparatorForType method with inheritance使用带有继承的 AssertJ usingComparatorForType 方法
【发布时间】:2026-02-09 04:05:01
【问题描述】:

我找到了 assertj (3.5.2) 方法:usingComparatorForType 并爱上了它。

但我想将 2 个 XmlGregorianCalendar 日期与误差范围进行比较。而且这种神奇的方法不适用于这种情况......

原因如下:

  • XmlGregorianCalendar 是一个抽象类
  • 真实对象类型为:XmlGregorianCalendarImpl
  • 这个类 (XmlGregorianCalendarImpl) 是私有的,所以我不能为这个类创建一个特定的比较器。

对于这种情况你有什么解决办法吗?是否有另一种方法可以很好地处理继承?

提前致谢。

【问题讨论】:

  • 虽然该方法似乎没有检查不同的适用比较器,只是为了精确匹配,com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl 不是private,它在 Java 8 中是 public。在其他版本中可能是package 访问,在这种情况下,您仍然可以通过反射 (Class.forName(...)) 访问该类并在同一个包中创建一个比较器。

标签: java unit-testing testing junit assertj


【解决方案1】:

我同意usingComparatorForType 应该支持这个用例:https://github.com/joel-costigliola/assertj-core/issues/758

【讨论】:

  • 感谢提交!