一部のテストでreflectionEqualsを使用したかったのですが、null以外のすべてのフィールドのクラスがequalsを実装している場合にのみ機能することがわかりました。これは私の分野のいくつかには当てはまりません。equalsをオーバーライドし、equals(ヘッダー)を実装していないフィールドで明示的にreflectionEqualsを使用するサブクラスを使用することを考えました。これは機能しますが、面倒で、より良い方法があるかどうかを確認したいと思いました。私のテストでidentityequalsが機能しない理由は、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"});
}