IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Maven Java Discussion :

Comportement différente entre Junit/Eclipse et Junit/Maven


Sujet :

Maven Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de tunizar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 573
    Par défaut Comportement différente entre Junit/Eclipse et Junit/Maven
    Salut à tous,
    J'ai une classe de test Junit quand je l'execute depuis Eclipse (Run as /Junit)
    elle fonctionne parfaitement, mais quand je déploie l'application (via Jenkins)
    le Maven lance cette classe de test avec échec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.NoSuchMethodError: org.springframework.beans.factory.annotation.InjectionMetadata
    je suppose qu'il ne trouve pas une méthode issue de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.springframework.beans.factory.annotation
    sous Eclipse j'ai bien définie un USER Library que je reproduit dans le pom.xml
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    		<!-- Spring -->
    <!-- 		org.springframework.beans-3.0.0.RELEASE.jar -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-beans</artifactId>
    			<version>3.0.0.RELEASE</version>
    		</dependency>
    <!-- 		org.springframework.context-3.0.0.RELEASE.jar -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-context</artifactId>
    			<version>3.0.0.RELEASE</version>
    		</dependency>
    <!-- 		org.springframework.context.support-3.0.0.RELEASE.jar -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-context-support</artifactId>
    			<version>3.0.0.RELEASE</version>
    		</dependency>
    <!-- 		org.springframework.core-3.0.2.RELEASE.jar -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-core</artifactId>
    			<version>3.0.2.RELEASE</version>
    		</dependency>
    <!-- 		org.springframework.expression-3.0.0.RELEASE.jar -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-expression</artifactId>
    			<version>3.0.0.RELEASE</version>
    		</dependency>
    <!-- 		org.springframework.jdbc-3.0.0.RELEASE.jar -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-jdbc</artifactId>
    			<version>3.0.0.RELEASE</version>
    		</dependency>
    <!-- 		org.springframework.orm-3.0.0.RELEASE.jar -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-orm</artifactId>
    			<version>3.0.0.RELEASE</version>
    		</dependency>
    <!-- 		org.springframework.oxm-3.0.0.RELEASE.jar -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-oxm</artifactId>
    			<version>3.0.0.RELEASE</version>
    		</dependency>
    <!-- 		org.springframework.test-3.0.0.RELEASE.jar -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-test</artifactId>
    			<version>3.0.0.RELEASE</version>
    		</dependency>
    <!-- 		org.springframework.transaction-3.0.0.RELEASE.jar -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-tx</artifactId>
    			<version>3.0.0.RELEASE</version>
    		</dependency>
    <!-- 		org.springframework.web-3.0.0.RELEASE.jar -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-web</artifactId>
    			<version>3.0.0.RELEASE</version>
    		</dependency>
    et voilà la classe de test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    /**
     * 
     */
    package com.sys.test.dao;
    import static org.junit.Assert.assertEquals;
     
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.List;
    import java.util.TimeZone;
    import java.text.ParseException;
    import com.sys.dao.BoxControlUnitDao;
    import com.sys.dao.FactoryUnitDao;
    import com.sys.model.BoxControlUnit;
    import com.sys.model.FactoryUnit;
     
    import org.apache.commons.lang.RandomStringUtils;
    import org.junit.Test;  
    import org.junit.runner.RunWith;  
    import org.slf4j.Logger;  
    import org.slf4j.LoggerFactory;  
    import org.springframework.beans.factory.annotation.Autowired;  
    import org.springframework.test.context.ContextConfiguration;  
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;  
    import org.springframework.test.context.transaction.TransactionConfiguration;
    @RunWith(SpringJUnit4ClassRunner.class)  
    @ContextConfiguration("classpath:applicationContext-TestUnit.xml")
    //@ContextConfiguration("classpath:applicationContext.xml")
    @TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false)
    public class BoxUnitDaoTest 
    {
     
    	@Autowired 
    	BoxControlUnitDao objBoxControlUnitDao;
    	@Autowired
    	FactoryUnitDao objFactoryUnitDao;
    	private Logger log = LoggerFactory.getLogger(BoxUnitDaoTest.class);  
    	String boxToString = "";
    	String boxToJson = "";
    	String boxToXml = "";
     
    	@Test 
    	public void testGetById() 
    	{
     
    		log.info("*************Recherche par id***********************");
    		long productId = 2;
    		BoxControlUnit tmpBoxControlUnit = objBoxControlUnitDao.getBoxControlUnit(productId);
    		log.info(tmpBoxControlUnit.toJson());
     
    		log.info("*************fin de recehrche par id***********************");
    	}
     
    }
    Pour préciser : j'ai pas mets les jar sous web-inf/lib

    Merci de votre aide

  2. #2
    Membre chevronné Avatar de ruscov
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2007
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2007
    Messages : 347
    Par défaut
    Déjà, ne touche pas au USER_LIBRARY, dans Eclipse, si tu as le plugin MAven, il gère tout pour toi.

    Ensuite essaye
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-core</artifactId>
    			<version>3.0.0.RELEASE</version>
    		</dependency>

  3. #3
    Membre très actif Avatar de tunizar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 573
    Par défaut
    Merci pour ta réponse !
    je viens de remarquer une chose
    quand le build est lancé, Maven cherche à récupérer les dépendances
    depuis le net (je suppose) ou une reposity qu'il connait, mais
    à ma grande surprise je vois dans le web-inf/lib du build les JARs qu'il a été cherché et certains leurs versions ne correspondant à ce que j'ai indiqué dans le pom.xml
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    		<!-- Spring -->
    <!-- 		org.springframework.beans-3.0.0.RELEASE.jar -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-beans</artifactId>
    			<version>3.0.0.RELEASE</version>
    		</dependency>
    <!-- 		org.springframework.context-3.0.0.RELEASE.jar -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-context</artifactId>
    			<version>3.0.0.RELEASE</version>
    		</dependency>
    <!-- 		org.springframework.context.support-3.0.0.RELEASE.jar -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-context-support</artifactId>
    			<version>3.0.0.RELEASE</version>
    		</dependency>
    <!-- 		org.springframework.core-3.0.2.RELEASE.jar -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-core</artifactId>
    			<version>3.0.2.RELEASE</version>
    		</dependency>
    <!-- 		org.springframework.expression-3.0.0.RELEASE.jar -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-expression</artifactId>
    			<version>3.0.0.RELEASE</version>
    		</dependency>
    <!-- 		org.springframework.jdbc-3.0.0.RELEASE.jar -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-jdbc</artifactId>
    			<version>3.0.0.RELEASE</version>
    		</dependency>
    <!-- 		org.springframework.orm-3.0.0.RELEASE.jar -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-orm</artifactId>
    			<version>3.0.0.RELEASE</version>
    		</dependency>
    <!-- 		org.springframework.oxm-3.0.0.RELEASE.jar -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-oxm</artifactId>
    			<version>3.0.0.RELEASE</version>
    		</dependency>
    <!-- 		org.springframework.test-3.0.0.RELEASE.jar -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-test</artifactId>
    			<version>3.0.0.RELEASE</version>
    		</dependency>
    <!-- 		org.springframework.transaction-3.0.0.RELEASE.jar -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-tx</artifactId>
    			<version>3.0.0.RELEASE</version>
    		</dependency>
    <!-- 		org.springframework.web-3.0.0.RELEASE.jar -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-web</artifactId>
    			<version>3.0.0.RELEASE</version>
    		</dependency>
    Et dans
    /Users/softdev2/.jenkins/jobs/MonAppli/workspace/Prod/MonAppli/target/MonAppli/WEB-INF/lib
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    spring-aop-2.5.6.SEC03.jar
    spring-core-2.5.6.SEC03.jar 
    spring-oxm-3.0.0.RELEASE.jar
    spring-beans-2.5.6.SEC03.jar
    spring-expression-3.0.0.RELEASE.jar
    spring-test-3.0.0.RELEASE.jar
    spring-context-2.5.6.SEC03.jar
    spring-jdbc-3.0.0.RELEASE.jar
    spring-tx-3.0.0.RELEASE.jar
    spring-context-support-3.0.0.RELEASE.jar
    spring-orm-3.0.0.RELEASE.jar
    spring-web-2.5.6.SEC03.jar
    Citation Envoyé par ruscov Voir le message
    Déjà, ne touche pas au USER_LIBRARY, dans Eclipse, si tu as le plugin MAven, il gère tout pour toi.

    Ensuite essaye
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-core</artifactId>
    			<version>3.0.0.RELEASE</version>
    		</dependency>

  4. #4
    Membre émérite

    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2005
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2005
    Messages : 588
    Par défaut
    Je ne comprends pas : depuis Eclipse tu travailles avec quoi ? m2eclipse ? si oui, m2eclipse t'aide à faire ton POM (auto-completion...).

    Ensuite, je constate que tu utilises plusieurs versions de Spring (3.0.0 & 3.0.2)... c'est à éviter !

    => tu pourrais définir une variable pour éviter une telle erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <properties>
      <maven.test.failure.ignore>true</maven.test.failure.ignore>
      <spring.framework.version>3.0.0.RELEASE</spring.framework.version>
    </properties>
    Tu peux changer la version par exemple 3.2.2.RELEASE pour le dernière release...
    Tu noteras que j'ai ajouté une propriété pour maven (maven.test.failure.ignore) ! Mais, ce n'est pas obligatoire...

    Puis, dans toutes tes dépendances Spring:
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
     <version>${spring.framework.version}</version>

    Ensuite spring-test doit être dans le scope test :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-test</artifactId>
       <version>${spring.framework.version}</version>
       <scope>test</scope>
      </dependency>
    itou pour junit...

    org.springframework.beans.factory.annotation.InjectionMetadata doit se trouver dans spring-beans !

    Concernant Jenkins : je ne comprends pas comment tu as configuré Maven... As-tu regardé tes dossiers .m2 (machine locale & serveur Jenkins) ? C'est là, où par défaut, Maven dépose ses dédendences pour le build...

    a+
    Philippe

  5. #5
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Par défaut
    sans aller jusqu'a débugger jenkins, pourquoi ne tentes tu pas de lancer tes tests en local avec la ligne de commande ?

    En terme d'étapes, je te conseille :
    - tester en ligne de commande
    - d'uniformiser tes versions de spring
    - tester en ligne de commande
    - utiliser mvn eclipse:eclipse pour générer ton .projet et .classpath, souvent on constate des différences avec ce que génère le plugin eclipse
    - faire un mvn dependency:tree pour comprendre quelles sont les dépendances ramenés par maven

  6. #6
    Membre très actif Avatar de tunizar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 573
    Par défaut
    Salut,
    Merci pour vos réponses.
    Le problème vient de moi, de ma méconnaissance pour Maven.
    Je suis partie d'un projet non Maven qui contient des USER LIBRARY tout en pensant que ça soit possible et sans problème de le passé en Maven, tant pour moi, ce n'était pas la bonne porte d'entrée.
    Donc j'ai fais les étapes suivantes :
    1/ Je suis partie d'un projet exemple http://www.mkyong.com/maven/how-to-c...ct-with-maven/
    2/Ajout des dependence une à une
    3/A chaque ajout de dépendance, je regarde l'onglet Dependency Tree du pom.xml

    4/Si il y a un conflit après l'ajout d'une dependance, j'essaye de calibrer la tir
    5/A présent tout fonctionne
    Merci à tous
    Citation Envoyé par hugo123 Voir le message
    sans aller jusqu'a débugger jenkins, pourquoi ne tentes tu pas de lancer tes tests en local avec la ligne de commande ?

    En terme d'étapes, je te conseille :
    - tester en ligne de commande
    - d'uniformiser tes versions de spring
    - tester en ligne de commande
    - utiliser mvn eclipse:eclipse pour générer ton .projet et .classpath, souvent on constate des différences avec ce que génère le plugin eclipse
    - faire un mvn dependency:tree pour comprendre quelles sont les dépendances ramenés par maven

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comportement différent entre IE6 et IE7
    Par Zeo34 dans le forum Intégration
    Réponses: 1
    Dernier message: 12/11/2008, 12h24
  2. ComboBox.DropDownCount, comportement différent entre 2000 et XP
    Par Jipété dans le forum Composants VCL
    Réponses: 4
    Dernier message: 10/11/2007, 18h32
  3. Réponses: 12
    Dernier message: 26/10/2007, 16h27
  4. [AJAX] Comportement différent entre IE et FF2
    Par pacopau dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/02/2007, 19h18
  5. Comportement différent entre un bouton et une image
    Par MicheMTP13 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 07/11/2005, 08h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo