データベース単体テストでのテスト条件の使用
通常のデータベース単体テストでは、Transact-SQL (T-SQL) テスト スクリプトが実行され、ExecutionResult クラスのインスタンスが返されます。このクラスのインスタンスには、DataSet、実行時間、および、スクリプトの影響を受ける行が含まれます。このような情報はすべて、スクリプトの実行中に収集されます。これらの結果を、T-SQL スクリプト内で RAISERROR 関数を使用して評価するか、テスト条件を使用して評価できます。Visual Studio Team System Database Edition には、定義済みのテスト条件が用意されています。
定義済みのテスト条件
データベース単体テスト デザイナのテスト条件ペインを使用して追加できる、定義済みのテスト条件の一覧を次の表に示します。
テスト条件 |
テスト条件の説明 |
---|---|
空の ResultSet |
T-SQL スクリプトから返される結果セットが空でない場合に失敗します。 |
実行時間 |
T-SQL テスト スクリプトの実行時間が予期された値を超えた場合に失敗します。既定の実行時間は 30 秒です。 実行時間はテスト スクリプトのテストだけに適用され、事前テスト スクリプトおよび事後テスト スクリプトには適用されません。 |
結果を作成できません |
常に "結果不確定" というテスト結果を生成します。これは、すべてのテストに追加される既定の条件です。このテスト条件は、テスト確認が実装されていないことを示すために用意されています。他のテスト条件を追加した後、テストからこのテスト条件を削除します。 |
ResultSet が空ではありません |
結果セットが空である場合に失敗します。テスト スクリプト内の T-SQL @@RAISERROR 関数でこのテスト条件または EmptyResultSet を使用すると、更新が正しく行われたかどうかをテストできます。たとえば、更新前の値を保存し、更新を実行し、更新後の値を比較し、予期された結果が返されない場合にエラーを発生させることができます。 |
行数 |
結果セットに予期された行数が含まれていない場合に失敗します。 |
スカラ値 |
結果セット内の特定の値が指定した値と等しくない場合に失敗します。既定の [予期された値] は null です。 |
メモ : |
---|
実行時間テスト条件は、T-SQL テスト スクリプトの実行に必要な時間の上限を指定します。この上限を超えた場合、テストは失敗します。テスト結果には、実行時間テスト条件とは別の継続時間統計も含まれています。継続時間統計には、実行時間に加えて、データベースに 2 回接続するための時間、事前テスト スクリプトや事後テスト スクリプトなどの他のテスト スクリプトを実行するための時間、および、テスト条件を実行するための時間も含まれています。したがって、テストの継続時間が実行時間より長くても、テストが成功する可能性があります。 報告される継続時間には、データの生成とスキーマの配置にかかった時間は含まれません。これらの処理がテストの実行前に行われるためです。テストの継続時間を表示するには、[テスト結果] ウィンドウで実行したテストを選択して右クリックし、[テスト結果の詳細の表示] をクリックします。 |
データベース単体テストにテスト条件を追加するには、データベース単体テスト デザイナのテスト条件ペインを使用します。詳細については、「方法 : データベース単体テストにテスト条件を追加する」を参照してください。
テスト メソッドのコードを直接編集して、機能を追加することもできます。詳細については、「Visual Basic または Visual C# でのデータベース単体テストのカスタマイズ」を参照してください。たとえば、Assert ステートメントを追加してテスト メソッドに機能を追加できます。詳細については、「データベース単体テストでの T-SQL アサーションの使用」を参照してください。
拡張可能なテスト条件
定義済みの 6 つのテスト条件に加えて、独自のテスト条件を新しく記述できます。新しいテスト条件は、データベース単体テスト デザイナのテスト条件ペインに表示されます。 詳細については、「方法 : データベース単体テスト デザイナでテスト条件を作成する」を参照してください。