Ich schreibe gerne JUnits für meine Hibernate-Dao-Implementierungen und erkundige mich nach dem vorgeschlagenen Ansatz zum Schreiben dieser Unit-Testfälle. Ich kann mir zwei Strategien vorstellen.
Meckern der Hibernate-Vorlage mit einer Bibliothek wie EasyMock und Testen nur der DAO-Implementierung gegen diese Mock-Objekte. (Nicht wirklich zufriedenstellend, da ich gegen eine Scheinschicht testen würde und nicht wirklich gegen Testdaten)
Testen mit einer realen Testdatenbank (ein In-Memory / extern) durch Schreiben einiger Testdaten vor dem Ausführen meines Komponententests.
Welcher Ansatz ist ein guter Weg, um sicherzustellen, dass unsere DAOs ordnungsgemäß getestet werden? Bitte zeigen Sie mir Beispiele für die Konfiguration von Tests mit dem zweiten Ansatz. Ich habe versucht, mich umzusehen, habe aber nicht die richtigen gefunden.
Danke, Siva.
Ich würde dem zweiten Weg folgen und HSQLDB als DB-Engine verwenden. Ich denke, dass das Aufrufen der echten Implementierung hinter einer DAO den positiven Effekt hat, Mapping-Fehler zu erfassen.
Wenn Ihre DAOs mehr Logik haben, dass sie nicht mit dem Ruhezustand zu tun hat (stellen Sie sich vor, wenn Sie einige Objekte laden und dann einige Operationen ausführen, um ein anderes Objekt zurückzugeben), würde ich eine andere Testklasse erstellen, um die Methoden zu testen mit zusätzlicher Logik, und verspotten Sie die Methoden, die die Daten zurückgeben. Dadurch können Sie die Daten auf einfachere Weise einrichten, anstatt die DB zu initialisieren und diese Objekte sofort zu laden.
Test gegen eine echte Datenbank. Die meiste Komplexität von Hibernate liegt im Mapping, und wenn Sie die SessionFactory (oder was sie einkapselt) vortäuschen, vermissen Sie es, diese vollständig zu testen. Verwenden Sie das Spring Test Framework , um Ihre Tests zu vereinfachen und um lokale "Unit" -Tests durchzuführen, testen Sie mit einer In-Memory-Datenbank. H2 ist einfach zu bedienen und sehr schnell (besser als HSQLDB oder Derby). Zum Beispiel:
%Vor%Tags und Links unit-testing hibernate spring junit dao