2013-05-28 6 views
5

私はここで質問をテストし、多くのエンティティフレームワークはすでに存在していることを感謝しています。しかし、私はEffortに出くわしました。これは、メモリコンテキストのデータベースコンテキストを可能にします。テストEntity Frameworkの5 - メモリデータベースには良いオプションです

  1. このような方法を使用する場合の賛否両論は何ですか?

  2. 私はEFとインメモリデータベースので、このメソッドを使用するときに我々は我々自身を実装していないことを意味し、作業パターンのリポジトリとユニットを使用と思いますか?

  3. 、偽IDBSetを提供するSQL CEを使用するか、作業パターンのリポジトリとユニットを実装し、私はより良いこれらの技術のいずれかを使用していますのような他のオプションがありますか?

ここで選択肢の量に少し圧倒されました。私はおそらく銀の弾丸がないが、いくつかのガイダンスを期待していることを認識してください。プロ

おかげ

+0

非常に曖昧な質問ですが、これは便利です:http://www.codeproject.com/Articles/460175/Two-strategies-for-testing-Entity-Framework-Effort – ErikEJ

+0

私はEntityFrameworkで試していませんしかし、 "メモリ内のSQLite DBへのスワップ"はNHibernateには最適です。これは、データベースクエリを完全に模擬するために書かなければならないコードの量を上回ります。 –

+0

@ErikEJ - ありがとう、ええ、私はその例を見て、それに基づいていくつかの仕事をしました。私はそれが良い方法だと私が思うより多くの人々が経験しているのだろうかと思っています。 – davy

答えて

1

1):あなたのDALの機能が実際に動作することをテストすることができ、あなたがリポジトリをあざける年齢を過ごすいけない、あなたにそれあなたがより速く大規模なプロジェクトに(時間を)テストを実行することができインスタンスを提供します。 con:あなたは実際にあなたの実際のdbをテストしていません - 統合テストのポイントを打ち負かします。また、データベースを変更することは設定文字列です。後で編集:私は1トン単位のテストに慣れていましたが、私は今、垂直スライスを好む傾向があります。私は、データベースについて気にしている頃は、とにかく統合テストが必要なところにいることがわかりました。

は個人的に私はそれが集中テストを続けるとテストをエンド・ツー・エンドのファンです - 数を減らし、実際の仕様に対してテストします。

2)UOWとリポジトリパターンが異なるものを促進します。リポジトリはDALをカプセル化し、dbプロバイダ自体から抽象化する必要があります。通常は作業パターンの単位を使用します。基本的に作業単位はトランザクショナルアクセスを提供し、テスト時にメモリDBを使用するためのフックを提供する必要があります。だから私は個人的には彼らが役に立たないように感じることはありません。 dalをテストし模擬したいとき(受け入れ/統合ではなく、小さな単体テスト)、再現パターンはそれ自身で支払うことになります。あなたはそれなしで逃げることができますか?おそらくそれを持っているのコストは小さいし、すべてがきちんとして整えられている。上記のヒントのほかに、最終的にDBを実装する必要があるときに統合テストが必要な場合があります。これらは、すでに外部で作業/テスト済みであるため、簡単に実装できます。

3)は、それは誰もがあなたのために答えることができるものではありません知りません。それらと遊ぶ。

関連する問題