Précédent   Forum du club des développeurs et IT Pro > Java > Général Java > Persistance > JPA

JPA Forum d'entraide sur l'API de persistance JPA (Java Persistence API)

Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Affichage des résultats du sondage: Comment testez-vous vos entités JPA ?
Je fais mes tests unitaires JPA moi-même 22 46,81%
J'utilise un framework spécifique pour JPA 5 10,64%
J'ai créé une sorte de framework maison pour JPA 1 2,13%
Je ne crée pas de tests unitaires JPA 19 40,43%
Votants: 47. Vous ne pouvez pas participer à ce sondage.

Publicité
'
Réponse
 
Outils de la discussion
Vieux 07/05/2008, 21h50   #1
fisico
Membre du Club
 
Avatar de fisico
 
Inscription : septembre 2003
Messages : 98
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 98
Points : 64
Points : 64
Par défaut Comment testez-vous vos entités en JPA ?

Bonjour à tous,

Je lance une sorte de débat sans avoir réellement de prétention.

Actuellement, je travaille sur un projet longue durée où nous utilisons JPA. Le développement des entités en JPA fait partie de mon boulot quotidien et le domaine compte environ une trentaine d'entités. Comme dans toute application, il faut tester les composants qui ont été créés. Particulièrement, parce que le domaine physique est écrit par un ingénieur base de données en Oracle. Ce qui signifie que il n'y a pas de génération automatique des tables. Le but des tests unitaires est dans ce cas-ci de contrôler que les entités vont bien être persistées.
  1. Que testez-vous ?
  2. Et comment le testez-vous ?

Alexis
__________________
SCJP - SCWCD - SCBCD
fisico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2008, 22h02   #2
fisico
Membre du Club
 
Avatar de fisico
 
Inscription : septembre 2003
Messages : 98
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 98
Points : 64
Points : 64
Un article sur un blog correspondant à ce sujet:

http://eskatos.wordpress.com/2007/10...mory-database/
__________________
SCJP - SCWCD - SCBCD
fisico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2008, 22h49   #3
eskatos
Futur Membre du Club
 
Paul Merlin
Inscription : mars 2007
Messages : 13
Détails du profil
Informations personnelles :
Nom : Paul Merlin
Localisation : France

Informations forums :
Inscription : mars 2007
Messages : 13
Points : 16
Points : 16
Salut,

Je continue d'utiliser la méthode décrite dans le blog cité par fisico pour tester les entités en utilisant directement un EntityManager mais aussi pour tester mes DAOs sans aucun soucis.

Evidemment ça ne remplace pas des tests d'intégrations menés avec le SGBD utilisé en production car les implémentations de JPA utilisent différement les SGBDs sous-jacents.

Paul
eskatos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2008, 12h26   #4
xv-mnt
Membre actif
 
Avatar de xv-mnt
 
Inscription : juillet 2005
Messages : 142
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : juillet 2005
Messages : 142
Points : 167
Points : 167
Pour ma part, notre équipe architecture mous a pondu quelques classes utilitaires qui permettent de changer :
- le type de transaction utilisée : soit JTA lorsque le projet est déployé sur notre serveur, soit RESOURCE_LOCAL lors des tests unitaires. Pour celà, il faut 2 fichiers persistence.xml. Le premier sera inséré dans l'EAR, et le second ne sera visible que lors des tests unitaires.
- le type de base de données : HSQLDB ou ORACLE pour les tests unitaires, suivant ce que l'on veut faire. Pour éviter la multiplication les DB ORACLE (+ lourd à maintenir), on a choisi de faire tourner les tests unitaires sous hsqldb.
Ainsi, les différents développeurs ne se marchent pas dessus lors des tests.
On a cependant une base ORACLE pour les tests unitaires exécutés lors de l'intégratio continue. Les paramètres de connexion sont définis dans un fichier de configuration.
Pour info, nos builds utilisent maven, et le build continu se fait avec CruiseControl.
__________________
Tout le monde savait que c'était impossible à faire. Puis un jour quelqu'un est arrivé qui ne le savait pas, et il le fit (Winston Churchill)
xv-mnt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2008, 20h56   #5
vbrabant
Expert Confirmé Sénior
 
Inscription : mai 2003
Messages : 3 293
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 3 293
Points : 7 890
Points : 7 890
Tu peux toujours regarder comment nous faisons nos tests : http://java.developpez.tv/suntechdays2007/#vid19

Vincent
__________________
Vincent Brabant

Ne pas me contacter par MP ni par mail pour des questions techniques. Ma liste d'amis restera vide.
vbrabant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2008, 14h19   #6
SuperPat
Futur Membre du Club
 
Étudiant
Inscription : août 2004
Messages : 74
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2004
Messages : 74
Points : 19
Points : 19
Pour notre part, nous utilisons le framework TestNG pour lancer les tests unitaires et avec version embedded du noyeau JBoss avec lequel nous déployons nos EJB3, et il suffit d'un lookup sur notre facade pour tester toute la chaine métier justqu'à la couche persistance.
SuperPat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2008, 18h03   #7
adamo901
Membre du Club
 
Développeur informatique
Inscription : août 2007
Messages : 118
Détails du profil
Informations personnelles :
Âge : 35

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2007
Messages : 118
Points : 51
Points : 51
Envoyer un message via MSN à adamo901
En ce qui me concèrne, je n'ai jamais fais des tests pour la partie JPA de mes projets.

Je n'en ai jamais eu besoins puisque Netbeans me crée automatiquement mes Entities et la gestion du CRUD et si facile avec le EntityManager.
adamo901 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2008, 14h40   #8
nicorama
Membre Expert
 
Avatar de nicorama
 
Inscription : juillet 2006
Messages : 765
Détails du profil
Informations personnelles :
Âge : 37
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : juillet 2006
Messages : 765
Points : 1 055
Points : 1 055
Citation:
Envoyé par adamo901 Voir le message
En ce qui me concèrne, je n'ai jamais fais des tests pour la partie JPA de mes projets.

Je n'en ai jamais eu besoins puisque Netbeans me crée automatiquement mes Entities et la gestion du CRUD et si facile avec le EntityManager.
C'est un peu la question que je me pose : utiliser un ORM, c'est bien quand tout est géré par l'ide : ca fait gagner un temps fou.

Mais si on complexifie le système, à quoi bon utiliser l'orm au lieu de tout faire à la mano avec jdbc et du xml via JDOM ? C'est pas franchement plus compliqué, bien plus souple, plus évolutif, ca diminue le nombre de classes par 3 et il n'y a pas de fichiers xml de config.

Je précise que c'est la question d'un noobs en ORM
__________________
Robusta Web Library : Clients RESTful open source pour Java, Android & GWT.
API Simple et Productive. Avec style.
nicorama est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2008, 14h33   #9
christopheJ
Expert Confirmé Sénior
 
Avatar de christopheJ
 
Inscription : avril 2004
Messages : 1 618
Détails du profil
Informations personnelles :
Âge : 38
Localisation : France, Indre et Loire (Centre)

Informations forums :
Inscription : avril 2004
Messages : 1 618
Points : 4 293
Points : 4 293
On ne multiplie pas forcement les classes par trois.
Le pattern DAO avec un DAO par entity n'est pas obligatoire.
L'EntityManager me sert de DAO générique, je n'ai donc pas de classes supplémentaire.

Pour l'aspect CRUD je fais confiance au framework, par contre il m'arrive d'utiliser DBUnit pour tester mes requetes JPQL.
Voir la vidéo donnée par vbrabant plus haut pour l'utilisation.
__________________
Rédacteur - modérateur Java
Les FAQ Java
Les cours et tutoriels Java
christopheJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2008, 13h34   #10
slevy
Membre éclairé
 
Inscription : juin 2007
Messages : 367
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 367
Points : 376
Points : 376
Pour ma part j'utilise JUnit et Spring pour tester mes DAO Hibernate.

Matt Raible dans cette présentation explique plusieurs de ces techniques :
https://appfuse.dev.java.net/TDDWithAppFuse.pdf
slevy est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/08/2008, 14h05   #11
heid
Membre éclairé
 
Avatar de heid
 
Inscription : mai 2002
Messages : 341
Détails du profil
Informations personnelles :
Localisation : France, Indre et Loire (Centre)

Informations forums :
Inscription : mai 2002
Messages : 341
Points : 335
Points : 335
J'utilise DBUnit avec des tests unitaires à la main.

Hélas l'implémentation JPA que j'utilise (KODO) me pose de sérieux problème de fiabilité des tests (n'est ce pas christophe... ) : des méthodes échouent en tests mais fonctionnent parfaitement dans l'application, et nous avons recours à quelques bidouilles pour tester les EJB en mode local et sans conteneur (injection manuelle des datasources et entitymanagers).
heid est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2010, 22h20   #12
spall
Invité régulier
 
Inscription : juillet 2002
Messages : 6
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 6
Points : 7
Points : 7
Citation:
Envoyé par slevy Voir le message
Pour ma part j'utilise JUnit et Spring pour tester mes DAO Hibernate.

Matt Raible dans cette présentation explique plusieurs de ces techniques :
https://appfuse.dev.java.net/TDDWithAppFuse.pdf
même chose pour moi.

http://static.springsource.org/sprin...e/testing.html
spall est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 12h17   #13
geforce
Membre éclairé
 
Avatar de geforce
 
Homme
Développeur informatique
Inscription : janvier 2010
Messages : 631
Détails du profil
Informations personnelles :
Sexe : Homme

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

Informations forums :
Inscription : janvier 2010
Messages : 631
Points : 350
Points : 350
Envoyer un message via Skype™ à geforce
Bonjour,

je voudrais faire des Tests Unitaire pour tester DAO (tout ce qui est CRUD)

Mais sans utiliser Spring, dit mois si ces possible ? est Eventuellement comment (façon de faire) ?

PS: j'utilise JEE6, EJB3.1, Junit4
geforce est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 13h57   #14
DevServlet
Modérateur
 
Homme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 2 760
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 2 760
Points : 3 554
Points : 3 554
Citation:
Envoyé par geforce Voir le message
Bonjour,

je voudrais faire des Tests Unitaire pour tester DAO (tout ce qui est CRUD)

Mais sans utiliser Spring, dit mois si ces possible ? est Eventuellement comment (façon de faire) ?

PS: j'utilise JEE6, EJB3.1, Junit4
Moi j'utilise Junit pout tester ,et Spring pour injecter mes EAO dans ma classe de Test.
DevServlet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 12h46   #15
geforce
Membre éclairé
 
Avatar de geforce
 
Homme
Développeur informatique
Inscription : janvier 2010
Messages : 631
Détails du profil
Informations personnelles :
Sexe : Homme

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

Informations forums :
Inscription : janvier 2010
Messages : 631
Points : 350
Points : 350
Envoyer un message via Skype™ à geforce
Citation:
Envoyé par DevServlet Voir le message
Moi j'utilise Junit pout tester ,et Spring pour injecter mes EAO dans ma classe de Test.
tu veux dire DAO ! a la place de EAO
geforce est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 13h39   #16
DevServlet
Modérateur
 
Homme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 2 760
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 2 760
Points : 3 554
Points : 3 554
Non je parle bien d'EAO, les DAO dans ma boite c'est pas pour attaquer les entités, mais pour faire du sql natif. C'est juste une question de définition.
DevServlet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 08h42   #17
Khaled.Noordin
Membre éprouvé
 
Avatar de Khaled.Noordin
 
Homme Khaled Noordin Abou Imran
Inscription : janvier 2005
Messages : 341
Détails du profil
Informations personnelles :
Nom : Homme Khaled Noordin Abou Imran
Localisation : France, Hauts de Seine (Île de France)

Informations forums :
Inscription : janvier 2005
Messages : 341
Points : 468
Points : 468
JUnit + DbUnit + Spring,
correspondrait à quel proposition , 1 ou 2?
Khaled.Noordin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 04h48.


 
 
 
 
Partenaires

Hébergement Web