2010-09-27 2 views
0

Je dois ajouter un lazy = true à une propriété & J'ai ajouté une tâche ant à intrument la classe pour permettre à hibernate de la rendre paresseuse dans mon pom.Test automatique affirmant qu'une propriété est vraiment paresseuse avec hibernate

est-il un moyen de tester que maintenant cette propriété est en mode paresseux en cours d'exécution sans regarder la sortie console hibernate SQL? Je veux dire avec des tests unitaires (im en utilisant le test de printemps avec junit). Je ne veux pas tester que l'attribut paresseux est présent dans le mappage XML. Cela seul ne garantit pas que hibernate le traitera comme une propriété paresseuse.

Je veux un test de junit pour être sûr que ce bug révélé par un testeur n'apparaîtra plus dans le futur (je ne suis pas seul dans le projet).

Je suis la (meilleure?) Pratique que tous les bugs non triviaux devraient avoir un test automatique afin d'empêcher son retour. (En passant, j'ai pris l'idée des tests du framework Spring)

Répondre

1

Vous pouvez charger l'entité, fermer la session, puis affirmer qu'un LazyInitializationException est levé lorsque vous accédez à la propriété.

+0

Merci beaucoup Henning !!! – mada

+0

@mada: De rien! En passant, vous pouvez montrer votre appréciation en upvoting et en acceptant des réponses. – Henning

1

J'ai trouvé une autre solution:
org.hibernate.Hibernate.isPropertyInitialized(pojo, propertyName) check if the property is initialized..

L'astuce de la force de LazyInitializationException pour fermer la Wich session entraînera des problèmes pour les autres tester & de rouvrir un si celui-ci a été partagé.

1

Nous n'avons pas réussi à utiliser isPropertyInitialized(entity, "property") mais isInitialized(entity.getProperty()) fonctionne bien

Questions connexes