2010-11-24 3 views
0


J'ai quelques tests unitaires pour mes DAO (implémentés en utilisant JPA). Je pensais que cela aiderait à tester chaque méthode CRUD séparément, par ex. Pour tester la méthode findAll(), je remplis la base de données à l'aide de DbUnit puis, dans le test, j'appelle seulement la méthode findAll() de DAO.
Cela semble être une meilleure approche que de peupler la base de données en utilisant la méthode create() de la même classe (les méthodes testées sont plus isolées).Duplication entre le fichier de jeu de données xml et le code de méthode de test

Le seul problème est que j'ai des données de test en double. J'ai l'ensemble de données XML pour DbUnit et j'ai également besoin de créer manuellement certaines entités à utiliser comme résultats attendus, donc j'ai un sous-ensemble de cet ensemble de données codé en dur dans les classes de test.

Je n'ai pas beaucoup d'expérience avec les tests, mais il me semble que ces tests pourraient se casser facilement lorsqu'ils sont modifiés. Y a-t-il un moyen d'éviter ce type de dédoublement qui en vaut la peine?

Répondre

0

Je préfère généralement configurer la base de données de test avec JPA. Cette approche est plus sûre et teste les annotations JPA en même temps.

+0

J'aurais dû aussi mentionner que je crée la base de test en utilisant le plugin Maven Hibernate3, je n'utilise DbUnit que pour le remplir avec des données de test. – prasopes

+0

Je n'ai pas utilisé ce plugin, mais je préfère plutôt configurer une unité de persistance avec une base de données en mémoire, par exemple: jdbc: derby: memory: myDb; create = true – Puce

Questions connexes