У меня есть несколько объектов (из другого класса), скажем PersonType1 и PersonType2, и я пытаюсь сравнить поля в тестовом примере. Сценарий похож на:
jsonA -> PersonTypeA;
jsonB -> PersonTypeB;
и PersonTypeA.class, и PersonTypeB.class имеют одинаковые свойства, например, идентификатор, имя и т. Д.
Я пытаюсь утверждать, что значения равны следующим образом:
assertEquals(personA.getId(), personB.getId());
Я не могу использовать стандартные отражения, предоставляемые Mockito, поскольку классы не совпадают.
Я не планирую писать кучу дополнительного кода для сравнения объектов. Нечто большее в линии:
Assert.assertTrue(new ReflectionEquals(expected, excludeFields).matches(actual)); //mockito
до
Assert.assertTrue(compareProperties(expected, excludeFields).matches(actual));
Редактировать 1: Это не повторяющийся вопрос
Я пытаюсь сравнить 2 разных объекта разных классов , если они имеют одинаковое значение в свойствах с одинаковыми именами. Я могу написать код, но ищу некоторые существующие методы утилит, если они уже присутствуют в junit5, mockito, hamcrest и т. Д.
assertEquals(objA.getId(), objB.getId());
//like this there are 30 properties
также есть вложенные объекты, такие как список, набор строк. Сравнивать их вручную - слишком много боли
Редактировать 2: Может быть, это объяснит лучше
У меня нет контроля над POJO. Они принадлежат кому-то другому. Итак, по сути, если у меня есть 2 класса
class Cat{
String id;
String name;
// 30 more properties
}
class Dog{
String id;
String name;
// 30 more properties
}
Как сравнивать кошку и собаку с одинаковыми значениями в id, имени и т. Д. Поскольку существует так много свойств, которые я не хочу писать
assertEquals(cat.getId(), dog.getId());
Итак, есть ли какая-нибудь утилита для этого? Мы можем сделать наоборот, если у нас есть 2 объекта (разных классов), мы можем скопировать свойства, используя BeanUtils.copyProperies(o1, o2)
в утилитах Spring и apache bean. Точно так же есть способ сравнить свойства?