TDD et ADO.NET Entity Framework

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

Question

Je joue avec ADO.NET Entity Framework récemment et je trouve que cela répond à mes besoins pour un projet que je développe. Je trouve aussi cool sa nature non invasive.

Après avoir généré un modèle de données à partir d'une base de données existante, vous devez intégrer le modèle généré et votre logique métier. Plus précisément, je suis habitué à tester par intégration mes classes qui interagissent avec le magasin de données via des blocs / moignons des interfaces DAL. Le problème est que vous ne pouvez pas faire cela en utilisant ADO.NET Entity Framework car les entités qu'il génère sont des classes simples sans interface.

La question qui se pose est la suivante: comment appliquer une approche TDD au développement d’une application utilisant ADO.NET Entity Framework? Est-ce même possible ou devrais-je migrer vers un autre jeu d'outils de génération de DAL?

Réponse acceptée

L’une des critiques majeures contre Entity Framework est qu’il est intrinsèquement difficile à tester, par exemple dans le Vote de confiance d’ ALT.Net cité plus haut.

Voici un article de blog expliquant comment résoudre ce problème et comment tester votre code sans toucher à la base de données, lorsque vous utilisez Entity Framework.

Si la testabilité est une préoccupation majeure, vous pouvez envisager un autre framework ORM, tel que NHibernate, au moins jusqu'à la sortie d'Entity Framework 2.0.


Réponse populaire

Bien que l'on ait répondu à la question initiale, j'ai le sentiment que je pourrais ajouter quelque chose:

J'utilise actuellement Entity Framework 4.0 sur un site intranet que je construis. Je peux tout tester dans ma logique métier et mes contrôleurs sans connexion à une base de données en utilisant le support POCO ajouté.

Bien que les POCO puissent être générés à partir du nouveau modèle t4 inclus dans VS 2010, quelque chose que je n'ai pas pu trouver dans VS 2010 est un modèle t4 permettant de générer le contexte de votre objet (le contexte de l'objet fonctionne essentiellement comme une unité intégrée). de travail pour EF et est essentiel pour mapper vos objets EF sur des POCO). Heureusement, Joachim Lykke Andersen dans son article de blog Entity Framework 4.0 Beta 1 - POCO, ObjectSet, Repository et UnitOfWork a écrit un modèle t4 pour le générer et cela a été très utile. Si vous recherchez une solution utilisant l'EF4 et pouvant être testée sans connexion à une base de données, je vous recommande fortement de mettre en œuvre une solution similaire à celle de sa solution, qui comprend un référentiel générique, une unité de travail et une unité de travail. Ce fut très utile.

Bonne chance.



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow