データベースにアクセスする遅れた ASP.Net コードがあります。sqlcommands を形成し、データベース上で実行するデータ アクセス層があります。
データ アクセス層を単体テストする最良の方法は何ですか? 実際にデータベースに接続してテスト ケースを実行するか、単に偽物を使用する必要がありますか?
シムを使用するのは良い考えですか (以下の投稿で説明)?
データベースにアクセスする遅れた ASP.Net コードがあります。sqlcommands を形成し、データベース上で実行するデータ アクセス層があります。
データ アクセス層を単体テストする最良の方法は何ですか? 実際にデータベースに接続してテスト ケースを実行するか、単に偽物を使用する必要がありますか?
シムを使用するのは良い考えですか (以下の投稿で説明)?
レガシーDLLが管理されていると仮定すると、VS2012で偽の機能を使用できるはずです。偽物は本当にこれを行うためのものです。偽物の一般的な使用法は次のように機能します。
http://msdn.microsoft.com/en-us/library/hh708916.aspxでも役立つ情報を見つけることができます。
データ アクセス層をテストする最善の方法は、実際にデータベースに接続する統合テストを作成することです。偽物を使用することはお勧めできません (Microsoft Fakes であれ、他のテスト分離フレームワークであれ)。これを行うと、データ アクセス レイヤーのクエリ ロジックを検証できなくなります。そのため、最初にテストする必要があります。
共有メモリ プロトコルを介してローカル SQL データベースにヒットする詳細な統合テストを使用すると、1 分間に数百のテストを簡単に実行できます。ただし、各テストは、信頼性の高いテスト実行を可能にするために、独自のテスト環境 (つまり、アクセスするテーブル内のテスト レコード) を作成し、それをクリーンアップする必要があります。データ アクセス レイヤーが明示的にトランザクションを管理しない場合は、まず TransactionScope を使用して、各テストの最後にすべての変更を自動的にロールバックします。これは最も簡単で最適なオプションですが、それが機能しない場合 (レガシー コードがトランザクションを内部で管理している場合)、各テストの開始時に以前のテストで残されたデータを削除してみてください。または、すべてのテストのすべてのレコードに対して常に新しい一意の主キーを使用することで、テストが互いに影響を与えないようにすることができます。