Проблема с Dozer: не найден метод чтения или записи для поля (статус) в классе

Вот мое сопоставление в файле dozermap.xml:

<mapping type="one-way">
      <class-a>com.models.ClassA</class-a>
      <class-b>com.models.ClassB</class-b>
        <field custom-converter="com.models.helpers.CustomConverterDemo">
            <a>status</a>
            <b>status</b>
        </field>
        <field-exclude type="one-way">
            <a>createdOn</a>
            <b>createdOn</b>
        </field-exclude>
</mapping>

Отображение работает нормально, и эта ошибка возникает только тогда, когда я пытаюсь запустить тесты junit.

Трассировка стека:

org.dozer.MappingException: No read or write method found for field (status) in class (class com.models.TestModel)
at org.dozer.propertydescriptor.GetterSetterPropertyDescriptor.determinePropertyType(GetterSetterPropertyDescriptor.java:319)
at org.dozer.propertydescriptor.GetterSetterPropertyDescriptor.getPropertyType(GetterSetterPropertyDescriptor.java:76)
at org.dozer.fieldmap.FieldMap.getDestFieldType(FieldMap.java:117)
at org.dozer.util.MappingUtils.applyGlobalCopyByReference(MappingUtils.java:212)
at org.dozer.loader.MappingsParser.processMappings(MappingsParser.java:168)
at org.dozer.loader.CustomMappingsLoader.load(CustomMappingsLoader.java:49)
at org.dozer.DozerBeanMapper.loadCustomMappings(DozerBeanMapper.java:213)
at org.dozer.DozerBeanMapper.initMappings(DozerBeanMapper.java:315)
at org.dozer.DozerBeanMapper.getMappingProcessor(DozerBeanMapper.java:192)
at org.dozer.DozerBeanMapper.map(DozerBeanMapper.java:120)
at com.helpers.GeneralHelper.mapDomainModelToKey(GeneralHelper.java:226)
at com.helpers.GeneralHelper.updateKeys(GeneralHelper.java:130)
at com.helpers.GeneralHelperTest.addKeys(GeneralHelperTest.java:295)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)

person ilce    schedule 18.05.2016    source источник
comment
Пожалуйста, добавьте достаточную информацию с задействованными классами и журналами.   -  person vinayknl    schedule 18.05.2016
comment
Хорошо, поэтому я добавил некоторые подробности о проблеме   -  person ilce    schedule 18.05.2016


Ответы (1)


Из сообщений журнала видно, что у вас нет сопоставлений для класса com.models.TestModel. Вы можете либо добавить соответствующее сопоставление в тестовых ресурсах, либо сделать это в настройках вашего тестового класса. В документах есть несколько примеров.

person vinayknl    schedule 18.05.2016
comment
почему я должен добавить еще один файл xml в тесты junit ?? Он должен работать с существующим. И у меня есть сопоставления для класса Testmodel. - person ilce; 18.05.2016
comment
Приведенный выше файл сопоставления не показывает сопоставление TestModel. Можете ли вы убедиться, что сопоставление, содержащее TestModel, находится в пути к классам при запуске теста? Также убедитесь, что у вас есть соответствующие методы установки в классе TestModel. - person vinayknl; 18.05.2016