Wie mache ich TDD effizient mit NHibernate?

8

Es scheint mir, dass die meisten Leute ihre Tests gegen In-Memory-Datenbanken schreiben, wie SQLite, wenn sie mit NHibernate arbeiten. Ich habe dies eingerichtet und ausgeführt, aber mein erster Test (der NHibernate verwendet) dauert immer zwischen 3-4 Sekunden, um auszuführen. Der nächste Test läuft viel schneller.

Ich verwende FluentNhibernate, um das Mapping durchzuführen, aber ungefähr dieselben Timings mit XML Mapping-Dateien. Für mich stört die Verzögerung von 3-4 Sekunden ernsthaft meinen Fluss.

Was ist der empfohlene Weg, um mit TDD und NHibernate zu arbeiten?

Ist es möglich, ISession zu verspotten, um die tatsächlichen Abfragen zu testen oder kann dies nur mit Speicherdatenbanken geschehen?

    
maz 01.12.2008, 22:30
quelle

4 Antworten

14

Ich verwende das Repository-Muster, um Datenbankoperationen durchzuführen, und wenn ich meine Tests durchführe, führe ich einfach die höheren Tests aus, die einfach das Repository (mit RhinoMocks) verfälschen.

Ich habe eine separate Suite von Tests, die explizit die Repository-Schicht und die NHibernate-Zuordnungen testet. Und diese ändern sich normalerweise nicht so sehr wie die Business- und Logik über ihnen.

Auf diese Weise bekomme ich sehr schnelle UnitTests, die niemals die DB treffen, und immer noch eine gut getestete DB-Schicht

    
Tigraine 02.12.2008, 08:52
quelle
4

Der Datenzugriff für die Einheitsprüfung ist nicht möglich, Sie können ihn jedoch testen. Ich erstelle einen Integrationstest für meinen Datenzugriff in einem separaten Projekt von meinen Komponententests. Ich führe nur die (langsamen) Integrationstests durch, wenn ich etwas in den Repositories, dem Mapping oder dem Datenbankschema ändere. Da die Integrationstests nicht mit den Komponententests kombiniert werden, kann ich die Komponententests immer noch ungefähr 100 Mal am Tag durchführen, ohne mich zu ärgern.

    
Paco 02.12.2008 20:07
quelle
1

Siehe Ссылка und Ссылка

>     
Webjedi 01.12.2008 22:34
quelle
0

Haben Sie versucht, einige der Standardeinstellungen in den optionalen Konfigurationseigenschaften zu ändern? Die Verlangsamung hängt wahrscheinlich mit bestimmten Optimierungen zusammen, die nhibernate mit der Codegenerierung macht.

Ссылка

Es scheint so, als würde eine in db-Datenbank der schnellste Weg sein, eine Datenschicht zu testen. Es scheint auch, sobald Sie beginnen, Ihre Datenschicht zu testen, bewegen Sie sich ein wenig über den Bereich eines Komponententests.

    
Min 01.12.2008 23:07
quelle