3

(アイデアを与えるために)複雑なオブジェクトのコレクションを返すサービスの単体テストを作成しようとしていますIQueriable<MyObject>が、問題へのアプローチ方法がわかりません。

このことを考慮:

public IQueriable<MyObject> GetMyObjects(int someParameterA, int someParameterB) {...}

基本的に、渡されたパラメータに応じて、かなり複雑なオブジェクトのコレクションを出力するメソッド。

アプリケーションは開発中であるため、ローカルSQLインスタンスを使用でき、このDBにサンプルデータを入力するメソッドを作成したので、サービスには何かがあります。

単体テストを書いた経験はあまりありません。OK、正直に言うと、ユニットテストを書いた経験はありません。-_-そして、私が見た例のほとんどは、いくつかの計算を行い、単一の結果を返すメソッドのものでした。したがって、テストケースを使用してテスト用のデータソースを添付することができます。メソッドが2つの数値の合計を返す場合、データソースは3つの列で構成されます。2つの数値と期待される結果です。

ですから、単体テストについての知識が限られているので、同じロジックを適用してコレクションを返すメソッドをテストしようとしています...そしてテストの内容がわかりません(簡単にテストできることはわかっています)返される要素の数)、テストケースを含むテストデータソースがどのようになるかは言うまでもありません。

VS2010にあることは知っていますがCollectionAssert、私の問題は、この場合の「期待値」を作成する方法がわからないことだと思います。

そのような方法の単体テストにアプローチするための最良の方法は何ですか?

4

1 に答える 1

3

データ ソースのモック コレクションを作成します。本格的なオブジェクト、またはテストで作成するのが複雑な場合は、おそらくMoqRhino Mocksなどのモッキング フレームワークの使用を検討してください。

肯定、否定、および例外のケースをカバーするのに十分な範囲のオブジェクトがデータ ソースに含まれている限り、このデータ ソースに対して一連のテストを記述して、 で可能なさまざまな入力状態から予想されるすべての結果をカバーできGetMyObjectsます。

このデータは、アプリケーションが実行されているときと同じにする必要があるため、通常はすべてのデータがなくても、テストしたい不測の事態をカバーするのに十分なデータが必要です。に対して、次のように:

  • ソースにデータがない場合はどうなりますか。
    • 空のコレクションまたは例外を取得しますか?
  • ソースにデータがあるが、渡したパラメーターと一致しない場合はどうなりますか
  • ソースにデータがあり、パラメータの 1 つだけが一致する場合
  • ソースにデータがあり、データを返す必要があるパラメーターを渡すとどうなりますか
  • メソッドに誤ったデータを渡すとどうなりますか?
  • 等....
于 2012-10-05T10:50:54.360 に答える