TDD und ADO.NET Entity Framework

ado.net entity-framework integration-testing tdd unit-testing

Frage

Ich habe in letzter Zeit mit ADO.NET Entity Framework gespielt und finde, dass es meinen Bedürfnissen für ein Projekt entspricht, das ich entwickle. Ich finde auch cool, dass es nicht invasiv ist.

Nachdem Sie ein Datenmodell aus einer vorhandenen Datenbank generiert haben, müssen Sie das erzeugte Modell und Ihre Geschäftslogik integrieren. Genauer gesagt, ich bin es gewohnt, meine Klassen zu testen, die mit dem Datenspeicher über Mocks / Stubs der DAL-Schnittstellen interagieren. Das Problem ist, dass Sie dies nicht mit ADO.NET Entity Framework durchführen können, da die Entitäten, die es generiert, einfache Klassen ohne Schnittstelle sind.

Die Frage ist: Wie wende ich einen TDD-Ansatz für die Entwicklung einer Anwendung an, die ADO.NET Entity Framework verwendet? Ist das überhaupt möglich oder sollte ich zu einem anderen DAL-Generierungs-Toolset wechseln?

Akzeptierte Antwort

Eine der größten Kritikpunkte gegen das Entity Framework war, dass es von Natur aus schwer zu testen ist, zum Beispiel in der ALT.Net- Abstimmung "No Confidence" , die zitiert wurde.

In einem Blogbeitrag erfahren Sie, wie Sie dieses Problem umgehen können und in der Lage sind, Ihren Code zu testen, ohne die Datenbank zu treffen, wenn Sie Entity Framework verwenden.

Wenn die Testbarkeit ein wichtiges Anliegen ist, sollten Sie sich zumindest bis zur Veröffentlichung von Entity Framework 2.0 ein anderes ORM-Framework wie NHibernate ansehen.


Beliebte Antwort

Obwohl die ursprüngliche Frage beantwortet wurde, möchte ich vielleicht etwas hinzufügen:

Ich verwende derzeit das Entity Framework 4.0 auf einer Intranetsite, die ich gerade baue. Ich kann alles in meiner Geschäftslogik und in den Controllern ohne Datenbankverbindung mit der hinzugefügten POCO-Unterstützung testen.

Obwohl die POCOs aus der neuen in VS 2010 enthaltenen T4-Vorlage generiert werden können, kann ich in VS 2010 keine T4-Vorlage zum Generieren Ihres Objektkontexts finden (der Objektkontext funktioniert im Wesentlichen als integrierte Einheit.) für EF und ist für die Zuordnung Ihrer EF-Objekte zu POCOs unerlässlich). Glücklicherweise hat Joachim Lykke Andersen in seinem Blogbeitrag Entity Framework 4.0 Beta 1 - POCO, ObjectSet, Repository und UnitOfWork eine T4-Vorlage für die Erstellung geschrieben, die sehr hilfreich war. Wenn Sie mit EF4 eine Lösung suchen, die ohne Datenbankverbindung getestet werden kann, empfehle ich dringend, etwas Ähnliches zu implementieren, das seiner Lösung ähnelt. Dazu gehören ein generisches Repository, ein Unit of Work-Wrapper und eine Unit of Work-Factory. Es war sehr hilfreich.

Viel Glück.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum