0

NHibernate 3 を使用するプロジェクトに取り組んでいますが、コードはかなり面倒です。私がやりたいことは次のとおりです。

  • テスト コードをプロジェクトに導入する
  • リポジトリ パターンの紹介 - 私は Entity Framework 4 を使用したプロジェクトでそれを行いました。特に、使用するストレージに関係なくクエリをテストする機会を楽しんでいました (内部ストレージをモックし、オブジェクトのリストのようなメモリ内実装を挿入することができました)。
  • 現在、DAO コードは CreateCriteria メソッドで動作し、NHibernate 固有のクエリを作成するため、NHibernate ストレージを別のものに置き換えることは不可能です (少なくとも、List インスタンスで NHibernate.ICriteria を実行する方法がわかりません。したがって、作成する方法が必要です)。ストレージの実装に関係なく使用できるクエリ。

それを達成する方法はありますか?

4

1 に答える 1

0

それはおそらくあなたが探しているものとは正確には異なります。2種類のテストがあります。データベースなしで純粋なロジックをテストする単体テストとデータベース統合テストです。

ユニットテスト

クエリを実装するクラスへのインターフェースがあります。このように、ドメインにはNHibernateへの参照がありません。あなたの場合、これはおそらくリポジトリです。それらへのシンプルで小さなインターフェースを作成し、リポジトリ全体をモックします。これにはNHibernateも必要ありません。それが永続性の無知の美しさです。

データベース統合テスト

メモリ内にあるSqliteデータベースでNHibernateを実行しています。このようにして、NHibernateに依存するマッピング、クエリ、その他のものをテストしています。

于 2012-05-21T11:57:57.030 に答える