我想在我的一些测试中使用reflectionEquals,但发现它仅在所有非空字段的类都实现等于时才有效。我的某些领域并非如此。我考虑过使用一个覆盖等于的子类,并在未实现等于(标头)的字段上显式使用反射等于。这可行,但很混乱,想检查是否有更好的方法。identity equals 在我的测试中不起作用的原因是我正在使用 gson 将对象编组到数据库。这是我的子类解决方案:
@Override
public boolean equals(Object obj) {
TrackingEvent other = (TrackingEvent) obj;
return EqualsBuilder.reflectionEquals(this.getHeaders(), other.getHeaders()) &&
EqualsBuilder.reflectionEquals(this, other, new String[] {"headers"});
}