Question

J'utilise Spring.net avec NHiberante (HibernateTemplate) pour implémenter mes DAO.

J'ai également des tests d'intégration, qui vont de 'AbstractTransactionalDbProviderSpringContextTests'.

DI fonctionne correctement et tous les tests réussissent MAIS parfois, ils réussissent même s'ils ne le devraient pas .

Par exemple, si mes fichiers hbm.xml ont une erreur comme celle-ci:

<class name="Confluence.Domain.User" table="THIS TABLE DOES NOT EXIST">

Les tests échouent, mais si l'erreur est semblable à celle-ci:

<many-to-many class="Confluence.Domain.User" column="THIS COLUMN DOES NOT EXIST"/>

les tests réussissent à cacher le bogue en silence.

Je le teste en utilisant SetComplete () et en vérifiant les modifications dans la base de données, mais je pense que l'idée de ce type de tests n'est pas de le faire.

Quelqu'un peut-il me dire comment résoudre ce problème?

Merci beaucoup!

@Ben: Si je dois réellement exécuter les scripts SQL pour voir s'ils fonctionnent, quels sont les avantages d'utiliser ce type de tests Spring?

Était-ce utile?

La solution

Si vous avez une erreur de syntaxe dans votre mappage, NHibernate échouera sous config.BuildSessionFactory ()

Mais pour les objets de base de données mal orthographiés / inexistants, le seul moyen de savoir pour NHibernate est de lancer une requête ... Vous pouvez donc utiliser des tests d'intégration pour tester l'insertion / la sélection sur une seule entité, afin de vous assurer qu'elle fonctionne.

Je ne suis pas sûr de ce que cela a à voir avec Spring.NET.

Autres conseils

Lors du test de vos DAO NH, vous devez vider la session pour que la base de données soit mise à jour avec les nouvelles informations, mais restaure comme auparavant. La procédure à suivre est expliquée ici - http://forum.springframework.net/showthread. php? t = 5246 J'ai ajouté ceci à la documentation de référence. J'espère que cela vous aidera.

Salut, Mark

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top