データベースロジックを単体テストするにはどうすればよいですか?


12

TDDに関しては、まだ小さな問題を乗り越える問題があります。

データレイヤー(linq2SQL)からフィルター処理されたデータの特定のレコードセットを取得するメソッドが必要です。DBMLから生成されたlinq生成クラスを使用していることに注意してください。問題は、このためのテストを書きたいということです。

私は:

a)最初にテストにレコードを挿入し、次にメソッドを実行して結果をテストします

b)データベースにある可能性のあるデータを使用します。このロジックが原因で物事が壊れる可能性があることに熱心にしないでください。

c)あなたは何を提案しますか?

回答:


7

(a)のバリエーション。

テストに使用できるテストデータベースまたはデータベースのサブセクションを用意します。テストをセットアップするときは、テストを開始するために必要に応じてDBを初期化するルーチンを用意します(これは、必要に応じて各テストの前に実行できます)。これには、データの削除、データの挿入などが含まれます。その後、テストを実行します。ティアダウンフェーズでは、自分の後にクリーンアップします。稼働中のシステムを混乱させるリスクなしに、必要なだけ繰り返すことができます(他の何かに必要なデータベース内のデータを使用してテストすることはお勧めできません)。


1
いい答えです。sqliteを使用して使い捨てデータベースを作成するのが好きです。データベースの実装に固有のもの(たとえばトリガーなど)をテストする場合は不可能ですが、セットアップやティアダウンを迅速かつ無害にできます。
ボゲイミン

1
@bogeymin-必要に応じて、トリガーを使用してテストDBをセットアップできます(FixtureSetup中にスクリプトでデータベース全体を作成できます)
Yaakov Ellis
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.