2

自分のデータアクセス方法をテストする方法について誰かがアイデアを持っているかどうか疑問に思っています. 検索データ アクセス メソッドのテストがはるかに簡単であることがわかりましExecuteReaderdataTable.CreateDataReader()。これにより、結果セットが返された場合に、オブジェクトが正しく設定されているかどうかをテストできます。

しかし、これを永続化メソッド (つまり、追加、更新、削除など) にどのように変換すればよいでしょうか。テストしたいのは、コマンドパラメーターが正しく設定されているかどうかなどです.

何か案は?乾杯

4

3 に答える 3

1

O /RマッパーフレームワークLLBLGenProでは、テスト用に専用のデータベースを使用し、機能のグループごとに異なるテストプロジェクトを使用します。したがって、挿入/更新用の特別なデータベース、継承関連のアクションをテストするための特別なデータベース、巨大なセット用の特別なデータベース、フェッチ用の特別なデータベースがあります。さらに、フェッチ指向、linqプロバイダー指向、挿入/更新/削除指向、メモリ内のもの指向など、さまざまなプロジェクトで単体テストを分離しました。

このように、テストは保守可能であり、相互に影響を与えません。特別なデータベースを使用して、私たちは何を期待し、何をすべきかを知っています。

もちろん、永続性ロジックテストの意味にも依存します。私たちのようにフレームワークレベルのルーチンをテストしたい場合、モックはそれほど有用ではありません。すべてではないにしても、ほとんどの場合。フレームワークレベルのコード(リポジトリコードなど)を利用するコードのテストについて実際に話している場合は、利用するフレームワークにエラーがない限り、モックが役立ちます。:)

于 2008-12-24T08:42:43.790 に答える
1

あざけることは行く方法です。Moqのようなものを使用すると、モック接続 (IDbConnection など) をデータ アクセス クラスに提供し、接続によって作成されたコマンドのパラメーターが正しく設定されているかどうかをテストできます。

IDbCommand.CreateParameter への連続した呼び出しをモックする方法を説明するブログ投稿 (ここを参照) をしばらく前に書きました。モック パラメーターを設定したら、Value プロパティと ParameterName プロパティが設定されていることを確認できます。

于 2008-12-24T06:52:59.610 に答える
1

単体テストにはインメモリ データベース (hsql) を使用します。セットアップはトランザクションを開始し、ティアダウンはそれをロールバックします。そうすれば、単体テストでデータベースの状態を常に知ることができます。

于 2008-12-24T07:09:55.083 に答える