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

Tests et Performance Java Discussion :

Junit / Spring / Jpa (peu être JNDI?)


Sujet :

Tests et Performance Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Junit / Spring / Jpa (peu être JNDI?)
    Bonjour,

    Je débute dans tout ce domaine et j'ai un problème à faire mes tests unitaires.

    J'ai trouvé de nombreux exemples sur internet mais aucun que j'arrive à faire fonctionner avec mon architecture.

    Je vous met mon architecture simplifié (que je n'ai pas le droit de modifier) :

    COMPTE est dans une BDD X
    PERSONNE est dans une BDD Y

    Donc j'ai deux persistance unit !

    Voici mon code :

    Entites :
    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
     
    @Entity
    @Table(name = "COMPTE") 
     
    public class Compte {
     
     
    	@Id
    	@Column(name = "ID", nullable = false)
    	@GeneratedValue(strategy = GenerationType.AUTO)
    	@XmlTransient
    	private long id;
     
     
        @Column(name = "LOGIN", length = 15, nullable = false)
        long login;
     
         // Getter et Setter
     
    }
     
    @Entity
    @Table(name = "PERSONNE") 
     
    public class Personne {
     
     
    	@Id
    	@Column(name = "ID", nullable = false)
    	@GeneratedValue(strategy = GenerationType.AUTO)
    	@XmlTransient
    	private long id;
     
     
        @Column(name = "NOM", length = 15, nullable = false)
        String nom;
     
         // Getter et Setter
     
    }
    Les dao :

    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
     
    public class CompteDaoImpl {
     
        @PersistenceContext(unitName = "persistence_x") 
        protected EntityManager entityManagerCompte;
     
        public void persist(E entity) {
    	LOG.debug("persisting instance");
    	try {
    	    getEntityManager().persist(entity);
    	    LOG.debug("persist successful");
    	} catch (RuntimeException re) {
    	    LOG.error("persist failed", re);
    	    throw new DaoException(re);
    	}
        }
     
         // Getter et Setter
    }
    Service :

    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
     
    @Service
    @Transaction
    public class service {
     
    public get testPersonne(Long login,String nom) {
     
    // Persist du Compte
    // Persist de la Personne
    }
     
    public getPersonneValide() {
     
         getPersonneDao.getPersonneValide();
    }
     
    // Getter et Setter des dao (pour spring)
     
    }
    persistence.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <persistence-unit name="persistence_x"
    		transaction-type="RESOURCE_LOCAL">
    <class>compte</class>
    </persistence-unit>
     
    <persistence-unit name="persistence_y"
    		transaction-type="RESOURCE_LOCAL">
    <class>personne</class>
    </persistence-unit>
    Et pour finir mon fichier spring.xml :

    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
     
     
    	<bean id="persistenceUnitManager"
    		class="fr.PersistenceUnitManager">
    		<property name="persistenceXmlLocations">
    			<list>
    				<value>classpath*:META-INF/persistence.xml</value>
    			</list>
    		</property>
    	</bean>
     
     
    	<bean id="entityManagerCompte"
    		class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    		<property name="persistenceUnitName" value="persistence_x" />
    		<property name="persistenceUnitManager" ref="persistenceUnitManager" />
    	</bean>
     
    	<bean id="entityManagerPersonne"
    		class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    		<property name="persistenceUnitName" value="persistence_y" />
    		<property name="persistenceUnitManager" ref="persistenceUnitManager" />
    	</bean>
    	<bean id="txManager"
    		class="org.springframework.transaction.jta.JtaTransactionManager">
    		<property name="transactionManagerName" value="java:/TransactionManager" />
    		<property name="userTransactionName" value="UserTransaction" />
    	</bean>
     
    	<tx:jta-transaction-manager />
     
    	<!-- enable the configuration of transactional behavior based on annotations -->
    	<tx:annotation-driven transaction-manager="txManager" />
    En production ça marche très bien aucun soucis, en Junit ça ne marche pas

    Soit je déclare un jndi et il n'arrive pas à l'initialiser, soit je crée des TransactionsManager pour chaque mais je vois pas comment faire...

    En gros je suis perdu !

  2. #2
    Membre actif Avatar de hbennou
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 162
    Points : 205
    Points
    205
    Par défaut
    Bonjour,

    je ne vois pas ta classe de test Junit?

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Pardon, je les simplement oublié

    La voici :

    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
     
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations={"/spring-config-test.xml"})
    public class ServiceTest {
     
        static
        {
    	Logger rootLogger = Logger.getRootLogger();
    	rootLogger.setLevel(Level.WARN);
    	rootLogger.addAppender(new ConsoleAppender(
    		new PatternLayout("%-6r [%p] %c - %m%n")));
        }
     
        @Autowired
        public Service service;
     
     
     
        @Test
        public void testPersonne() {
            service.testPersonne(3,"toto");
            Personne personne = service.getPersonneValide();
            assertEquals("Personne valide","toto", personne.getNom());
        }
     
     
     
     
     
    }
    Edit : correction de la majuscule.

  4. #4
    Membre actif Avatar de hbennou
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 162
    Points : 205
    Points
    205
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     public void TestPersonne() {
            service.testPersonne(3,"toto");
            Personne personne = service.getPersonneValide();
            assertEquals("Personne valide","toto", personne.getNom());
        }
    le nom de la méthode de test Junit doit commencer par une minuscule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     public void testPersonne() {
    }

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Vi pardon c'est une faute quand je les écrits sur le forum, j'ai pas fais de copier coller.

    Mais en gros, soit j'écris les transactions managers à la main, et le getPersonneValide() retourne null (donc il n'a rien sauvegarder en base) soit j'essaye de passer par un JNDI et j'ai une erreur d'initialisation.

Discussions similaires

  1. Réponses: 12
    Dernier message: 11/05/2009, 14h51
  2. [Framework] Configuration Tomcat + Jsf + IceFaces + Spring/JPA/Hibernat
    Par yannlejunter dans le forum Spring
    Réponses: 9
    Dernier message: 07/05/2009, 16h19
  3. [Data] integration spring jpa toplink jboss
    Par jpclavery dans le forum Spring
    Réponses: 1
    Dernier message: 23/04/2008, 11h41
  4. [Data] Spring + JPA (hibernate) + Tomcat
    Par balteo dans le forum Spring
    Réponses: 1
    Dernier message: 19/11/2007, 11h06
  5. Struts + Spring + JPA
    Par Superdub dans le forum Struts 1
    Réponses: 1
    Dernier message: 16/10/2007, 09h04

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