Frage

Ich verwende Spring.net mit NHiberante (HibernateTemplate) auf meine DAO zu implementieren.

Ich habe auch einige Integrationstests, die von 'AbstractTransactionalDbProviderSpringContextTests' erweitern.

DI funktioniert gut, und alle Testdurchlauf, aber manchmal passieren sie , auch wenn sie es nicht sollten .

Zum Beispiel, wenn meine hbm.xml Dateien einen Fehler wie folgt aussehen:

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

Die Tests fehlschlägt, aber wenn die Fehler wie diese:

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

die Tests stumm den Fehler passieren versteckt.

Ich teste es SetComplete mit () und der DB für die Änderungen überprüft, aber ich denke, die ganze Idee dieser Art von Tests ist dies nicht zu tun.

Kann mir jemand sagen, wie dieses Problem zu beheben?

Vielen Dank!

@ Ben: Wenn ich tatsächlich den SQL-Skripte ausführen, um zu sehen, ob sie funktionieren, was ist der Nutzen dieser Art von Feder Tests mit

War es hilfreich?

Lösung

Wenn Sie einen Syntaxfehler in ihrer Zuordnung haben, dann wird NHibernate auf config.BuildSessionFactory fail ()

Aber für mispelled / Nicht-Existenz von Datenbankobjekten, die einzige Möglichkeit für NHibernate zu wissen ist, um tatsächlich eine Abfrage ausführen ... Also Sie könnten einige Integrationstests Testeinsatz / auswählen, die auf einer einzigen Einheit verwenden, um sicherzustellen, dass es funktioniert.

Nicht sicher, was diese allerdings mit Spring.NET zu tun hat.

Andere Tipps

Bei der Prüfung Ihrer NH basiert DAO sollten Sie die Sitzung spülen, so dass die Datenbank mit den neuen Informationen aktualisiert, aber nach wie vor ein Rollback. Wie dies zu tun, wird hier erklärt - http://forum.springframework.net/showthread. php? t = 5246 ich das die Referenz docs hinzugefügt habe. Hoffe, das hilft.

Cheers, Mark

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top