2011-01-09 25 views
1

データアクセスレイヤーをユニットテストしようとしていますが、私のデータ接続を模擬してDALをテストしようとしています。私はモックしようとしていますコマンドの作成私は、パラメータの作成にIDbParametersのキューを使用することを考えましたが、単体テストでは、パラメータが正しい順序で構成されている必要があります。私はMOQを使用していて、これを通って私を歩いていくためにいくつかのドキュメンテーションを見てきましたが、私はこれをしないことを推奨していますが、接続のラッパーを書くのは大変ですが、DALが私のデータベースのラッパーと私はラッパーを書く必要があるとは思わない...もし私が、私はラッパーのためのデータベースへの接続をテストするユニットをテストするのですか?別のラッパーを書くことによって?それはカメのすべての方法をダウンしているようです。データ接続を模擬する必要があります

ユニットテスト/嘲笑のこの特定の分野に関して誰も推奨またはチュートリアルを持っていませんか?

+0

この記事を見てください:http://bit.ly/bF7jL3。 – Steven

答えて

2

私はメモリ内のデータベースをスワップして成功しました。これはあなたにそれを設定して簡単に壊す機会を与えます。また、渡された引数をアサートしてメモリ内のデータベースを返すことができるように、接続呼び出しをモックすることもできます。

+0

sqliteのようなものを使用してください:) –

0

部品番号は嘲笑クラスを作成するには、継承を使用しています - このアプローチの欠点は、あなたが偽にしようとしているクラスは、どちらかのシールクラスではありません少なくとも、インターフェースとして渡さなければならないということです。 1つの解決策は、 "un-mockable"クラスの周りにラッパークラスを作成し、代わりにそのクラスをモックすることです。残念ながら、この解決策にはかなりのメンテナンスが必要です。

あなたは密封されたクラスがTypemock IsolatorまたはJustMockのいずれかの購入を検討模擬することができますでしょうモックフレームワークのために支払うことを喜んでいる場合 - の両方が(密閉されたクラスと静的メソッドを含む)、事実上任意の.NETクラスとメソッドを模擬することができます。

0

このタイプのテストでは、モックを使用しないことをおすすめします。私はJavaを使ってこの道を歩みました。私は、私が嘲笑声明を書くことができることを除いて、私がほとんど証明していないと感じて、私はいつも終わりました。私はメモリ内のデータベースを使用するか、開発者ごとのデータベースを使用し、統合テストを受け入れることをお勧めします。

.NETに移動したところ、System.Data & Oracle.DataAccessのラッパーが使用されています。正に、私はこのアプローチが大好きです。

ラッパーは、単にoracleの関数またはプロシージャを呼び出す簡単な方法を提供するDataTable ExecuteFunction(...)のようなメソッドの束とIDatabaseインターフェイスを提供します。このAPIのクライアントに表示される唯一のSystem.Dataクラスは、DataTableです。このラッパーは、IDbParameterを使ってすべてのことを処理します。ラッパーには統合テストしかありません。実際DALをテスト

ユニットは非常に簡単で、プラスDALを書くと、その少しよりよい取得します。対処するためのあまり恐ろしい定型文。私のDALは、DAL私のデータベース

のラッパーであるために仮定されていることを

競合がデータベースで開催されたビジネス機能へのアクセスを提供します。 DBラッパーは、ボイラープレートのコードを取り除きます(そしてあなたがそれを嘲笑することができます)。

私が行った場合、ラッパーのデータベースへの接続をどのようにユニットテストするのですか?

Do not。いくつかのことが統合テストであることを受け入れる。

関連する問題