2017-10-04 29 views
0

Lorsque vous essayez de lancer un build Maven (mvn clean install) pour tester mon intégration, les tests, j'ai obtenu l'erreur suivante:Orika échoue lors de l'essai de Maven, mais pas dans 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

Je crois qu'il se passe en raison de l'utilisation d'Orika. Quelqu'un peut-il aider s'il vous plaît?

Mon code:

/** 
    * 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

C'est en effet dû à la façon dont vous faites le mapping avec Orika, mais il est difficile de vous donner une réponse sans voir votre code. Il semble que vous ne fournissiez pas la classe de destination du mappage. –

Répondre

0

J'ai finalement compris comment le résoudre en utilisant le plugin Surefire:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.20.1</version> 
    <configuration> 
     <useSystemClassLoader>false</useSystemClassLoader> 
    </configuration> 
</plugin> 

La question était que j'utilise org.reflections dans mon projet charger toutes les entités et les dtos de mes paquets. Lors de l'exécution de tests Maven, cela ne fonctionne pas. En n'utilisant pas le chargeur de classe système, les tests ont réussi. Plus d'informations peuvent être trouvées ici: http://maven.apache.org/surefire/maven-surefire-plugin/examples/class-loading.html