Orika失败,但不会在Eclipse
问题描述:
当试图运行一个Maven构建(mvn clean install
)来测试我的集成,测试,我得到以下错误:Orika失败,但不会在Eclipse
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.219 s <<< FAILURE! - in com.ots.gateway.service.OtsMobTokensServiceTest
[ERROR] testFindByOttNumber(com.ots.gateway.service.OtsMobTokensServiceTest) Time elapsed: 0.219 s <<< ERROR!
ma.glasnost.orika.MappingException: 'destinationClass' is required
at com.ots.gateway.service.OtsMobTokensServiceTest.testFindByOttNumber(OtsMobTokensServiceTest.java:26)
JDK: jdk1.8.0_144
Maven: apache-maven-3.2.5
Orika: 1.5.1
我相信这是发生由于使用Orika。有人可以帮忙吗?
我的代码:
/**
* Maps a source object(Entity or DTO) to its matching target(Entity or DTO).
*
* @param <T> the generic type
* @param o - entity or dto
* @return the t
*/
@SuppressWarnings("unchecked")
protected <T extends Object> T map(Object o) {
T mappedObject = null;
Mapper mapperProvider = mapperFactory.createMapper(o);
try {
if (SanityCheck.isValid(mapperProvider)) {
mappedObject = (T) mapperProvider.map(o);
} else {
if(SanityCheck.isValid(o)){
LOGGER.error("No Mapper found for object: " + o.getClass().getName() + " Service: "
+ this.getClass().getName());
}
}
} catch (ClassCastException e) {
LOGGER.error("Casting error", e);
}
return mappedObject;
}
答
我终于想通了如何通过利用万无一失插件来解决这个问题:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
<configuration>
<useSystemClassLoader>false</useSystemClassLoader>
</configuration>
</plugin>
的问题是,我用我的项目org.reflections加载我的包的所有实体和dtos。运行maven测试时,它不起作用。通过不使用系统类加载器,测试成功。更多的信息可以在这里找到: http://maven.apache.org/surefire/maven-surefire-plugin/examples/class-loading.html
这的确是由于您与Orika做映射的方式,但很难在没有看到您的代码的情况下给出答案。看起来你没有提供映射的目标类。 –