2009-07-10 23 views
2

Je me demandais si quelqu'un essayait d'utiliser JMockit Hibernate Emulation? La documentation Jmockit indique que lorsque les tests d'émulation Hibernate sont exécutés, ils n'utilisent pas les informations de mappage O/R. Cela signifie donc qu'il ne teste pas les mappages O/R, les chaînes de requête HQL, les requêtes natives, etc. Alors quels sont les avantages de l'émulation Hibernate? On peut juste créer MyDAO maquette et l'utiliser pour tester. Pourquoi s'embêter avec l'émulation hibenrate juste se moquer de tous les DAO. Qu'est-ce que tu penses ?JMockit Hibernate Emulation

Merci.

+0

hmm intéressant, personne n'a essayé de l'utiliser avant? –

Répondre

2

Découvrez la suite de tests "jmockit/samples/orderMngmntWebapp" dans la distribution complète JMockit. Cette classe de test repose sur l'émulation Hibernate. Il peut être exécuté via la cible "sampleTests" dans "jmockit/build.xml". Ma motivation pour créer cet outil était principalement que la création de SessionFactory prend trop de temps quand le projet a des centaines d'entités mappées. (Il a fallu environ 20-30 secondes dans un projet avec plus de 400 classes d'entités.) Ceci dans une série de tests d'intégration, bien sûr. Pour une série de tests unitaires, cet outil n'est pas utile. L'idée était qu'un développeur pouvait exécuter rapidement les tests d'intégration dans un environnement de développement local pour tester la logique métier mais pas la persistance, tout en laissant le serveur de build automatisé exécuter la suite de tests complète régulièrement, sans émulation.

Notez que les requêtes HQL sont toujours testées lors de l'utilisation de l'émulation Hibernate. La fausse implémentation analysera les chaînes HQL et exécutera la requête par rapport aux instances d'entité "persistées" en mémoire. Cependant, les informations de mappage O/R sont ignorées.

Mocking DAOs est également parfaitement valide, mais vos tests ne testeront jamais réellement le mappage O/R, les requêtes HQL ou l'accès réel à la base de données. En utilisant Hibernate Emulation, vous ne créez pas de mock, mais vous pouvez exécuter les tests sur une fausse implémentation Hibernate qui fournit quelque chose de similaire à une base de données en mémoire.