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; 
    } 
+0

这的确是由于您与Orika做映射的方式,但很难在没有看到您的代码的情况下给出答案。看起来你没有提供映射的目标类。 –

我终于想通了如何通过利用万无一失插件来解决这个问题:

<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