Как я могу утверждать равенство на двух классах без метода равенства?
Скажем, у меня есть класс без метода equals (), для которого нет источника. Я хочу утверждать равенство в двух экземплярах этого класса.
Я могу сделать несколько утверждений:
assertEquals(obj1.getFieldA(), obj2.getFieldA());
assertEquals(obj1.getFieldB(), obj2.getFieldB());
assertEquals(obj1.getFieldC(), obj2.getFieldC());
...
Мне не нравится это решение, потому что я не получаю картину полного равенства, если раннее утверждение не удается.
Я могу самостоятельно сравнить и отследить результат:
String errorStr = "";
if(!obj1.getFieldA().equals(obj2.getFieldA())) {
errorStr += "expected: " + obj1.getFieldA() + ", actual: " + obj2.getFieldA() + "\n";
}
if(!obj1.getFieldB().equals(obj2.getFieldB())) {
errorStr += "expected: " + obj1.getFieldB() + ", actual: " + obj2.getFieldB() + "\n";
}
...
assertEquals("", errorStr);
Это дает мне картину полного равенства, но неуклюже (и я даже не учел возможные нулевые проблемы). Третий вариант - использовать Comparator, но CompareTo () не скажет мне, какие поля потерпели неудачу в равенстве.
Есть ли лучшая практика, чтобы получить то, что я хочу от объекта, без подклассов и переопределения равных (тьфу)?