J'ai un problème extrêmement étrange dans mes tests JUnit que je n'arrive pas à résoudre. J'ai un projet webapp java multi-module avec une structure assez standard (DAO, service clasess, etc ...). Dans ce projet, j'ai un projet «noyau» qui contient un code de configuration abrégé qui insère un utilisateur de test avec les éléments nécessaires pour un utilisateur (dans ce cas une «entreprise», donc un utilisateur doit appartenir à une entreprise et ceci est appliqué au niveau de la base de données)Le test JUnit échoue - se plaindre des données manquantes qui viennent d'être insérées
assez simple jusqu'à présent ... mais voici où l'étrangeté commence
- certains tests ne parviennent pas à courir et lancer une exception de base de données où il se plaint que ne peut pas être inséré un utilisateur, car un l'entreprise n'existe pas. Mais il a juste créé l'entreprise dans la ligne de code précédente! Et il n'y avait pas d'erreurs dans l'insertion de l'entreprise.
- Encore plus étrange, si cette classe de test est exécutée par elle-même, tout fonctionne correctement. Ce n'est que lorsque le test est exécuté dans le cadre du projet qu'il échoue!
- Et le même code abstrait a été exécuté par plus de 10 tests avant celui qui échoue!
- f
Je suis frappais la tête contre un mur avec ce pendant plusieurs jours et n'ont pas vraiment fait des progrès. Je ne suis même pas sûr de ce que l'information à offrir pour aider à diagnostiquer cela.
- JUnit 4.4, Spring 2.5.6, 2.3.0 iBatis, Postgresql 8.3
- Passage à org.springframework.jdbc.datasource.DriverManagerDataSource de org.apache.commons.dbcp.BasicDataSource changé le problème. Avec DriverManagerDataSource, les tests fonctionnent pour la première fois, mais maintenant tout à coup, beaucoup de données ne sont pas restaurées dans la base de données! Ça laisse tout derrière. Tous sans erreur
- Les tests échouent lorsqu'il est exécuté via Eclipse & Maven
S'il vous plaît demander toute information qui peut me aider à résoudre mon problème!
Mise à jour: J'ai augmenté la journalisation au maximum. Il y a seulement une petite différence entre ce test qui échoue, et un autre juste comme ça qui réussit. La différence est mise en évidence. Après l'erreur se produit, je vois un certain nombre de « Création [java.util.concurrent.ConcurrentHashMap] » lignes et le code de gestion des erreurs commence
Pouvez-vous inspecter la base de données au moment de l'échec? A-t-il réellement le dossier d'entreprise? – Yishai
pouvez-vous donner s'il vous plaît fournir votre modèle db .. – bragboy