実装で LINQ 2 SQL を使用するドメイン レイヤー/モデル (リポジトリ) を使用してデータベースの統合テストを行い、DB を見つけたままにするにはどうすればよいでしょうか? 言い換えれば、DB の単体テストの理想的な世界では、統合テストは DB を見つけたままにします。
これを自動的に処理するツールはありますか? リポジトリを介して DB で統合テストを実行するためのベスト プラクティスは何ですか?
実装で LINQ 2 SQL を使用するドメイン レイヤー/モデル (リポジトリ) を使用してデータベースの統合テストを行い、DB を見つけたままにするにはどうすればよいでしょうか? 言い換えれば、DB の単体テストの理想的な世界では、統合テストは DB を見つけたままにします。
これを自動的に処理するツールはありますか? リポジトリを介して DB で統合テストを実行するためのベスト プラクティスは何ですか?
Spring Frameworkは、NUnit を使用する場合の統合テストのサポートを提供します。NUnit クラスは、アセンブリ Spring.Testing.NUnit.dll にあります。には、トランザクション管理を実行するクラスがいくつかあります。これらのクラスは、テストごとにデータベース トランザクションを作成してロールバックします。トランザクションの存在を想定できるコードを書くだけです。
これが実際に Linq to SQL で機能するかどうかは別の問題です。Spring によれば、これは ORM で機能します。SQL Server 2008 ではトランザクションをネストできるため、理論上は、トランザクションを開始し、Linq to SQL クラスでテストを実行してから、トランザクションをロールバックすることができます。しかし、私はそれを
試していません。
Ryan Garaguay は、 TransactionScopeと NUnit を使用してデータベースの変更をロールバックする興味深い記事を持っています (ただし、テスト コードでは、Linq ではなく SQLCommand オブジェクトと SQLConnection オブジェクトを使用しています)。