Ich arbeite an dem Versuch, einen JUnit Test zu implementieren, um die Funktionalität eines DAO zu überprüfen. (Das DAO erstellt/liest eine grundlegende Objekt/Tabellen-Beziehung).Spring/Hibernate/Junit Testbeispiel DAO gegen HSQLDB
Das Problem das ich habe, ist die Persistenz des DAO (für den Code nicht-Test) durch eine Inhouse-Lösung wird Frühjahr/Hibernate mit abgeschlossen, die die üblichen *.hbm.xml
Vorlagen, die meisten Beispiele, die ich beseitigt habe gefunden.
Aus diesem Grunde, ich habe einige Schwierigkeiten zu verstehen, wie Setup einen JUnit Test, um die DAO zu implementieren/Lese erstellen (nur sehr grundlegende Funktionen) zu einem In-Memory-HSQLDB. Ich habe ein paar Beispiele gefunden, aber die Verwendung der internen Persistenz bedeutet, dass ich einige der Klassen, die die Beispiele zeigen, nicht erweitern kann (ich kann das Setup von application-context.xml nicht richtig bekommen).
Kann jemand irgendwelche Projekte/Beispiele vorschlagen, die ich mir (oder irgendeiner Dokumentation) ansehen könnte, um mein Verständnis der besten Art und Weise zu verbessern, diese Testfunktionalität zu implementieren? Ich denke, das sollte wirklich einfach sein, aber ich stoße immer wieder auf Probleme bei der Umsetzung der Beispiele, die ich gefunden habe.
edit:
Hier ist meine Lösung für eine bessere Lesbarkeit, für jeden, der eine Hand braucht, Dinge gehen:
Mein
TestClass
:@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:applicationContextTest-Example.xml") @Transactional public class ExampleDaoTest extends AbstractTransactionalJUnit4SpringContextTests { @Resource(name = "sessionFactory") private SessionFactory exampleSessionFactory; @Resource(name = "exampleDao") private ExampleDao exampleDao;
Meine
applicationContext.xml
Datei :
Einige zusätzliche Informationen: ich bin auch nicht mit dem Konfigu erfahren Ich habe sie bereits in früheren Projekten konfiguriert. Mein aktuelles Projekt ist ein Mischmasch von Konfigurationen, ich kann nicht herausfinden, wie die "in-house" -Klasse, auf die ich mich bezogen habe, ihre Sitzungsfabrik erhält. Alle DAOs erweitern es (eine abstrakte Klasse), und innerhalb ist eine abstrakte Deklaration: public abstract SessionFactory getSessionFactory(); Ich kann nicht herausfinden, wo die Methode "getSessionFactory()" herkommt. Ich denke, es muss irgendwie von Spring eingespielt werden, aber ich kann keine Konfigurationsdateien finden. –
Danke Leute, ihr wart alle hilfreich. Für die in der Zukunft: Ich habe meine Unit applicationContext-Test.xml in meine Unit-Test (über @ContextConfiguration wie Willie spezifiziert) aufgenommen, in dem ich eine HSQLDB-Datenquelle, Sitzungsfabrik, Transaktionsmanager und das Daos als Bohnen . Meine Testklasse ist mit folgendem Kommentar versehen: @RunWith (SpringJUnit4ClassRunner.class), @ContextConfiguration (locations = "Ihre appContext.xml") @Transactional, und meine Sitzungsfactory & dao sind als Ressourcen annotiert (aus .xml defs): @ Ressource (name = "sessionFactory") –