При написании каких-то обобщенных c тестовых логи c я часто использую рефлексию. В данной ситуации я l oop по всем полям класса и сравниваю значения полей. Эти поля могут иметь типы массивов, поэтому я должен различать guish this:
Field[] fields = beanBeforeStore.getClass().getDeclaredFields();
or (Field field : fields) {
...
if (field.getType().isArray()) {
// How to best compare?
}
...
}
Это все часть теста JUnit
, который предоставляет assertArrayEquals
, который перегружен для примитивного типа массивы и массивы объектов. Так что для сравнения я должен привести значения к типу массива. Поскольку я хочу оставить эту часть обобщенной c, у меня проблема в том, что массив может быть примитивного типа или любого типа объекта. Каков наилучший способ сделать это?
Некоторая справочная информация: Этот лог c является частью тестирования сохраненных объектов. Поскольку объект сохраняется не как единое целое, а только с данными (нет необходимости сериализовывать службы, которые в свою очередь могут ссылаться на другие объекты). Тесты для каждого поля должны быть указаны c. Некоторые поля должны быть одинаковыми, а другие поля должны быть идентичными (через равно). Хотя некоторые объекты реализуют метод equals, не все поля, которые необходимо проверить, являются частью логики equals c.