TDDとADO.NETエンティティフレームワーク

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

質問

私は最近ADO.NET Entity Frameworkで遊んでいますが、私が開発しているプロジェクトに対する私のニーズに合っていると思います。私はまた、その非侵襲的な性質もクールだと思います。

既存のデータベースからデータモデルを生成した後は、生成されたモデルとビジネスロジックを統合するという課題に直面します。具体的には、DALインターフェイスのモック/スタブを介してデータストアとやり取りするクラスを統合テストするのに慣れています。問題は、ADO.NET Entity Frameworkが生成するエンティティがインターフェイスを持たない単純なクラスなので、ADO.NET Entity Frameworkを使用してこれを実行できないことです。

問題は、ADO.NET Entity Frameworkを使用するアプリケーションの開発にTDDアプローチをどのように適用するのかということです。これでも可能ですか、それとも別のDAL生成ツールセットに移行する必要がありますか?

受け入れられた回答

Entity Frameworkに対する大きな批判の1つは、gefが引用したALT.Net Vote of No Confidenceなど、本質的にテストが難しいということでした。

これを回避する方法、およびEntity Frameworkを使用しているときにデータベースにアクセスせずにコードをテストできるようにする方法について説明したブログ記事です。

テスト容易性が大きな関心事である場合は、少なくともEntity Framework 2.0がリリースされるまでは、NHibernateなどの別のORMフレームワークを検討することをお勧めします。


人気のある回答

元の質問に回答しましたが、何か追加する可能性があると思います。

私は現在、構築中のイントラネットサイトでEntity Framework 4.0を使用しています。追加されたPOCOサポートを使用して、データベース接続なしで私のビジネスロジックとコントローラーのすべてをテストすることができます。

POCOはVS 2010に含まれる新しいt4テンプレートから生成することができますが、VS 2010で見つけることができなかったものはオブジェクトコンテキストを生成するためのt4テンプレートです(オブジェクトコンテキストは基本的に組み込みユニットとして機能します)これはEFの作業量であり、EFオブジェクトをPOCOにマップするために不可欠です。幸いなことにJoachim Lykke Andersenは彼のブログ投稿Entity Framework 4.0 Beta 1でそれを生成するためのt4テンプレートを書きました、そしてそれは非常に役に立ちました。データベースに接続せずにテスト可能なEF4を使用したソリューションを追求する場合、汎用リポジトリー、作業単位ラッパー、および作業単位ファクトリーを含む、彼のソリューションに似たものを実装することを強くお勧めします。とても役に立ちました。

頑張ってください。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ