0

ユニット テストでは、ライブ データベースが使用されないように、ユニット テスト中に使用する一連のデータをメモリ内に作成するスタブ オブジェクトを取得しました。

テスト中のクエリとテストでクエリに提供された値を使用して、このセットから返される行数をチェックする単体テストがあります。私の最初の問題は、MSTest を使用しており、パラメーター化されたテストをサポートしていないため、異なる値のセットごとに 1 つのテストがあり、1 つのルーチンに提供される値だけが異なる多くのテストが行​​われることです。別のテスト フレームワークを使用することは、政治的に難しい場合があります。

また、データはコードを介してセットにエンティティを追加することによって作成されるため、データの操作はやや扱いにくいため、セット内のデータを簡単に確認することは難しく、将来このセットにレコードを追加する場合は、テストで返される必要があるレコードの数を更新して、テストがこのデータに非常に密接に依存するようにします。これを自動化する方法はないようです。そうですか?

4

2 に答える 2

2
  1. 別の単体テスト フレームワークを使用することを既に除外しているので、パラメーター化されたテストで独自の解釈を作成してみてはどうでしょうか。さまざまなパラメーターでプライベート ヘルパー メソッドを呼び出して、さまざまなデータ セットをループするテストを作成します。各データセット実行の結果を「収集パラメーター」に収集します。ノイズを減らすために、エラー/失敗したデータセットのみをログに記録することをお勧めします。ループの最後で、collecting パラメーターが空でない場合は、Assert.Fail に相当するものを発行し、結果をコンソールに記録します。(欠点は、GUI で個々のテストを表示できないことと、組織がテストの数を監視している場合、このすべての作業に対して +1 しか得られないことです。)
  2. これにより、必要に応じて特殊化された障害メッセージを実行できるという利点が得られます。障害トレースに重要なビットを含めることができます。これにより、どのシナリオが失敗したかを「すばやく確認」できます。
于 2010-01-29T04:57:19.803 に答える
0

Visual Studio 2010 アルティメット エディションがデータベース テストでこれを行う方法を見てみましょう (完全に構成された VPC をダウンロードできます)。

テストに「コンテキスト」を追加するオプションがあるため、テストを初期化すると、テストに必要なパラメーターでコンテキストが初期化されます。テスト メソッドのコードを介してパラメーターにアクセスするか、テストするコードに動的に割り当てることができます (最適なオプションではない可能性があります)。

また、期待される結果や、テストが準拠すべき条件を追加することもできます。これらの条件は、ある種のデータ ソース (データベースなど) から初期化して、データセットとして追加できます。テスト メソッドの条件を評価するメソッドを作成します。

さまざまなコンテキスト設定または条件を処理する特定のクラスを構築し、テスト クラスが継承できるベース テスト クラス (機能を追加する) を作成することを検討してください。

于 2010-09-19T16:47:14.670 に答える