データベース単体テストでの T-SQL アサーションの使用

データベース単体テストでは、Transact-SQL (T-SQL) テスト スクリプトが実行され、結果が返されます。結果は、結果セットとして返される場合もあります。テスト条件を使って結果を検証できます。たとえば、テスト条件を使用すると、結果セットで返された行数を調べたり、テストの実行にかかった時間を調べたりできます。テスト条件の詳細については、「データベース単体テストでのテスト条件の使用」を参照してください。

テスト条件を使用する代わりに、T-SQL アサーション (T-SQL スクリプトの RAISERROR ステートメント) を使用することもできます。状況によっては、テスト条件の代わりに T-SQL アサーションを使用した方がよい場合があります。

T-SQL アサーションの使用

データの検証に T-SQL アサーションとテスト条件のどちらを使用するかを決めるときは、次の点を考慮してください。

  • **パフォーマンス。**サーバーで T-SQL アサーションを実行すると、クライアント コンピュータにデータを移動してローカルで操作する場合よりも処理が高速です。

  • **使い慣れた言語。**どの言語を現在使い慣れているかに応じて、T-SQL アサーションか、C# または Visual Basic のテスト条件を選択できます。

  • **複雑な検証。**場合によっては、より複雑なテスト検証を C# または Visual Basic で構築し、クライアントでテストを検証できます。

  • **レガシ検証ライブラリ。**検証を実行するコードが既にある場合は、テスト条件の代わりに既存のコードをデータベース単体テストで使用できます。

RAISERROR ステートメント

T-SQL スクリプトで RAISERROR ステートメントを使用すると、サーバーで T-SQL アサーションを直接使用できます。構文は次のとおりです。

**RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState)**

それぞれの文字について以下に説明します。

@ErrorMessage は、ユーザー定義のエラー メッセージです。このメッセージ文字列は、printf_s 関数に似た形式で書式指定できます。

@ErrorSeverity は、ユーザー定義の重大度レベル (0 ~ 18) です。

Aa833266.alert_note(ja-jp,VS.90).gifメモ :

重大度レベルの値が '0' および '10' の場合、データベース単体テストは失敗しません。0 ~ 18 の範囲で別の値を使用すると、テストが失敗します。

@ErrorState は、範囲 1 ~ 127 の任意の整数です。この整数を使用して、コード内の異なる場所で発生した同じエラーの複数の出現を区別できます。

詳細については、SQL Server Books Online の「RAISERROR (Transact-SQL)」(https://msdn2.microsoft.com/ja-jp/library/ms178592.aspx) を参照してください。データベース単体テストでの RAISERROR の使用例については、「方法 : 単一のトランザクションのスコープ内で実行されるデータベース単体テストを作成する」を参照してください。

参照

処理手順

方法 : 編集するデータベース単体テストを開く

概念

データベース単体テストでのテスト条件の使用

Database Edition の用語の概要

その他の技術情報

データベース単体テストの概要