チュートリアル : 分離開発環境のベースライン設定

このチュートリアルでは、データベース プロジェクトを作成し、バージョン管理の対象にしました。 データベース プロジェクトには、実稼働サーバーのスキーマ定義と一致するスキーマ定義が含まれています。 データベース プロジェクトでの開発作業を開始する前に、データベース単体テストのセットアップ、データ生成計画の定義、テスト データの生成、およびテストの実行を行って、品質のベースラインを確立します。 テスト実行により、データベースがビルドされ、分離開発環境に配置され、生成データがデータベースに設定され、単体テストが実行されて結果が報告されます。

このチュートリアルでは、以下のタスクを行います。

  1. 分離開発環境の配置設定をカスタマイズする方法

  2. データベースをビルドし、分離開発環境に配置する方法

  3. データ生成計画を作成し、それをカスタマイズして、より現実的なテスト データを生成する方法

  4. データベース プロジェクトに含まれるストアド プロシージャ用の単体テストを定義する方法

  5. テスト データの生成および単体テストのビルドと実行方法

  6. 単体テストをソリューションの一部としてバージョン管理して、開発チームと共有する方法

必須コンポーネント

データベース単体テストを定義し、データ生成計画を作成、変更、および実行するには、Visual Studio Premium または Visual Studio Ultimate がインストール済みで、SQL Server 2008 の AdventureWorks2008 サンプル データベース (または SQL Server 2008 R2 の AdventureWorks2008R2 サンプル データベース) にアクセスできる必要があります。 「チュートリアル : 隔離されたデータベース開発環境の作成」の手順も完了しておく必要があります。

分離開発環境のビルド設定をカスタマイズするには

  1. ソリューション エクスプローラーで既に AdvWorksSandbox ソリューションが開かれている場合は、手順 4. に進みます。

  2. [ファイル] メニューの [開く] をポイントし、[プロジェクト/ソリューション] をクリックします。

    [プロジェクトを開く] ダイアログ ボックスが表示されます。

  3. AdvWorksSandbox ソリューションをクリックし、[開く] をクリックします (このソリューションの既定の場所は My Documents\Visual Studio 2010\Projects\AdvWorksSandbox です)。

    ソリューション エクスプローラーで AdvWorksSandbox ソリューションが開きます。

  4. ソリューション エクスプローラーで、[AdvWorksSandbox] ノードをクリックします。

  5. [プロジェクト] メニューの [AdvWorksSandbox のプロパティ] をクリックします。

  6. [配置] タブをクリックします。

  7. [配置設定の構成] ドロップダウン リストの [マイ分離開発環境] を選択します。

    注意

    分離開発環境用に構成した配置設定は、データベース プロジェクトが含まれるフォルダーの .user ファイルに格納されます。 .user ファイルはバージョン コントロールにチェックインされません。 このような設計により、各開発者は分離開発環境の設定を構成できます。

  8. [ターゲット接続] の横の [編集] をクリックします。

    [接続のプロパティ] ダイアログ ボックスが表示されます。

    ここで、ローカルの分離開発環境の接続文字列をカスタマイズすることができます。 各データベース開発者がデータベースのプライベート コピーを更新することをお勧めします。これにより、変更しても、チームの他のメンバーに悪影響を与えることがありません。 開発者が変更をテストして、チームと共有できるようになったら、中央バージョン管理システムを使用して変更を共有します。 「チュートリアル : 隔離されたデータベース開発環境の作成」では、ターゲット データベース名を設定しましたが、接続は設定しませんでした。

  9. 分離開発環境に使用するサーバーの名前を入力するか、クリックします。 たとえば、ローカル インスタンスを使用するには、「(local)」と入力します。

    重要

    前のチュートリアルで配置したのと同じサーバーに分離開発用データベースを配置すると、エラーが発生します。 このエラーは、既にファイルが作成されているために発生します。 このエラーを解決するには、FileStreamDocuments.sqlfile.sql ファイル (または、SQL Server 2008 R2 の場合は FileStreamDocuments2008R2.sqlfile.sql ファイル) 内で FILENAME パラメーターを変更します。 パラメーターをコード FILENAME = '$(DefaultDataPath)SandboxDocuments-IDE') に一致するように変更します。

  10. データベース サーバーへの接続に使用する認証の種類をクリックします。

    既定では、Windows 認証が指定されています。

  11. [OK] をクリックします。

    [ターゲット接続] に接続情報が表示されます。

  12. [ファイル] メニューの [選択されたファイルを上書き保存] をクリックし、データベース プロジェクトのプロパティへの変更を保存します。

データベースをビルドし、分離開発環境に配置するには

  1. [ビルド] メニューの [ソリューションのビルド] をクリックします。

    データベース プロジェクトがビルドされ、[出力] ウィンドウに結果が表示されます。

  2. ソリューション エクスプローラーで、[AdvWorksSandbox] ノードをクリックします。

  3. [ビルド] メニューの [ProjectName の配置] をクリックします。 [AdvWorksSandbox] ノードを右クリックし、[配置] をクリックすることもできます。

    データベース プロジェクトがビルドされ、配置スクリプトが生成されて、データベース プロジェクトのプロパティで指定した隔離されたデータベース開発サーバーにそのスクリプトが配置されます。

    次に、分離開発環境用のテスト データを生成します。

テスト データの生成

開発用の隔離されたデータベースはできました。次は、単体テストを進めるためのテスト データが必要です。 最初に、既定のデータ生成計画を作成し、その計画をカスタマイズして、より現実的なデータを作成します。 この例では、データベースのテーブルと列のサブセットに対するデータ生成のみを構成します。 Employee テーブルと StateProvince テーブルのデータ生成を構成します。

StateProvince テーブルの元のデータは機密ではありません。 したがって、分離開発データベースのデータ設定に元のデータを使用できます。

ただし、Employee テーブルの既定の生成計画は次のように変更してください。

  • Title は、開発者、 上級開発者、テスト担当者、上級テスト担当者、プロジェクト マネージャー、販売員、 上級販売員のいずれかに設定します。

  • BirthDate は、18 年以上前で、1930 年 1 月 1 日より後の日付を指定します。 この仕様は、データベース内の列の制約と一致します。

  • Marital Status は、"M" または "S" にします。

  • Gender は、"M" または "F" にします。

  • HireDate は、2000 年 1 月 1 日から今日までの日付にします。

  • VacationHours は、範囲 -10 ~ 160 の典型的分布にします。

  • ModifiedDate は、2000 年 1 月 1 日から今日までの日付にします。 ほとんどのレコードは近い日に更新されます。

  • Person テーブルの AdditionalContactInfo および Demographics は、AdventureWorks ソース データベースから取り込みます。

データ生成計画を作成するには

  1. ソリューション エクスプローラーで [AdvWorksSandbox] ノードを展開し、Data Generation Plans フォルダーをクリックします。

  2. [プロジェクト] メニューの [新しい項目の追加] をクリックします。

    [新しい項目の追加] ダイアログ ボックスが表示されます。

  3. [カテゴリ] ボックスの一覧で、[データ生成計画] をクリックします。

  4. [テンプレート] ボックスの一覧で、[データ生成計画] をクリックします。

  5. [名前] ボックスに、「AWGenPlan.dgen」と入力し、[追加] をクリックします。

    "AWGenPlan" という名前のデータ生成計画がデータベース プロジェクトに追加され、エディターで開かれます。 データベース スキーマが、データ生成計画内にインポートされます。

    次に、AWGenPlan を変更して、より現実的なテスト データを生成します。

データ生成を関心のあるテーブルに制限するには

  1. データ生成計画を右クリックし、[データ生成からすべてのテーブルを除外] をクリックします。

  2. データ生成計画で、HumanResources.Employee、Person.Person、Person.CountryRegion、および Person.StateProvince の各テーブルのチェック ボックスをオンにします。

    次に、StateProvince テーブルのデータ生成計画を定義します。

StateProvince テーブルのデータ生成計画を定義するには

  1. データ生成計画の [[Person].[StateProvince]] をクリックします。

  2. 列の詳細ペインの [StateProvinceCode] をクリックし、"ジェネレーター" フィールドを [シーケンシャル データ バインド ジェネレーター] に設定します。

    この手順は、この列にクエリの結果を代入することを示しています。

  3. [表示] メニューの [プロパティ ウィンドウ] をクリックします。

  4. [プロパティ] ウィンドウの [ジェネレーター] セクションの [接続情報] プロパティで、前の手順でデータベース スキーマのインポート元だったデータベースに対応する接続をクリックします。

    この手順により、この列用のデータを生成するクエリを実行するために使用するデータベース接続が指定されます。

  5. [プロパティ] ウィンドウの [ジェネレーター] セクションの [クエリの選択] プロパティで、クエリ文字列を「SELECT [StateProvinceCode] FROM [Person].[StateProvince]」に設定します。

  6. 列の詳細ペインの [変更された日付] をクリックします。

  7. [プロパティ] ウィンドウの [ジェネレーター] セクションで、[最大値] プロパティを今日の日付に設定します。将来レコードが変更されることはあり得ないためです。

  8. [プロパティ] ウィンドウの [ジェネレーター] セクションで、Min プロパティを「1/1/2000 12:00:00 AM」に設定します。 この例では、企業が 2000 年の年初からデータ収集を開始したと想定しています。

    次に、Person テーブルのデータ生成計画を指定します。

Person テーブルのデータ生成計画を定義するには

  1. データ生成計画の [[Person].[Person]] をクリックします。

  2. 列の詳細ペインの [PersonType] をクリックし、"ジェネレーター" フィールドを [正規表現] に設定します。

  3. [プロパティ] ウィンドウの [ジェネレーター] セクションで、Expression プロパティを (GC|SP|EM|IN|VC|SC) に設定します。

  4. 列の詳細ペインの [AdditionalContactInfo] をクリックし、"ジェネレーター" フィールドを [シーケンシャル データ バインド ジェネレーター] に設定します。

    この手順は、この列にクエリの結果を代入することを示しています。

  5. [表示] メニューの [プロパティ ウィンドウ] をクリックします。

  6. [プロパティ] ウィンドウの [ジェネレーター] セクションの [接続情報] プロパティで、前の手順でデータベース スキーマのインポート元だったデータベースに対応する接続をクリックします。

    この手順により、この列用のデータを生成するクエリを実行するために使用するデータベース接続が指定されます。

  7. [プロパティ] ウィンドウの [ジェネレーター] セクションの Query Select Query プロパティで、クエリ文字列を「SELECT * FROM [Person].[Person]」に設定します。

  8. 列の詳細ペインにある AdditionalContactInfo の "ジェネレーター出力" フィールドで、[AdditionalContactInfo] をクリックします。

    この手順により、結果セット内の、この列に関連付ける列が選択されます。

  9. 列の詳細ペインの [Demographics] をクリックし、"ジェネレーター" フィールドを [シーケンシャル データ バインド ジェネレーター] に設定します。

    この手順は、この列にクエリの結果を代入することを示しています。

  10. [表示] メニューの [プロパティ ウィンドウ] をクリックします。

  11. [プロパティ] ウィンドウの [ジェネレーター] セクションの [接続情報] プロパティで、前の手順でデータベース スキーマのインポート元だったデータベースに対応する接続をクリックします。

    この手順により、この列用のデータを生成するクエリを実行するために使用するデータベース接続が指定されます。

  12. [プロパティ] ウィンドウの [ジェネレーター] セクションの Query Select Query プロパティで、クエリ文字列を「SELECT * FROM [Person].[Person]」に設定します。

  13. 列の詳細ペインにある Demographics の "ジェネレーター出力" フィールドで、[Demographics] をクリックします。

    この手順により、結果セット内の、この列に関連付ける列が選択されます。

  14. 列の詳細ペインの [変更された日付] をクリックします。

  15. [プロパティ] ウィンドウの [ジェネレーター] セクションで、[最大値] プロパティを今日の日付に設定します。将来レコードが変更されることはあり得ないためです。

  16. [プロパティ] ウィンドウの [ジェネレーター] セクションで、Min プロパティを「1/1/2000 12:00:00 AM」に設定します。 この例では、企業が 2000 年の年初からデータ収集を開始したと想定しています。

    次に、Employee テーブルのデータ生成計画を指定します。

Employee テーブルのデータ生成計画を定義するには

  1. データ生成計画の [HumanResources].[Employee] をクリックします。

  2. 列の詳細ペインの [JobTitle] をクリックし、"ジェネレーター" フィールドを [RegularExpression] に設定します。

  3. [プロパティ] ウィンドウの [ジェネレーター] セクションで、Expression プロパティを「(Developer|Sr\. Developer|Tester|Sr\. Tester|Project Manager|Sales Associate|Sr\. Sales Associate)」に設定します。

  4. 列の詳細ペインの [BirthDate] をクリックします。

    "ジェネレーター" フィールドは、既定では [DateTime2] に設定されます。

  5. [プロパティ] ウィンドウの [ジェネレーター] セクションで、Max プロパティを 18 年前の今日の日付 (「10/30/1987 11:59:59 PM」など) に設定します。 また、Min プロパティを「1/1/1930 12:00:00 AM」に設定します。

  6. 列の詳細ペインの [MaritalStatus] をクリックし、"ジェネレーター" フィールドを [正規表現] に設定します。

  7. [プロパティ] ウィンドウの [ジェネレーター] セクションで、Expression プロパティを「(M|S)」に設定します。

  8. 列の詳細ペインの [Gender] をクリックし、"ジェネレーター" フィールドを [正規表現] に設定します。

  9. [プロパティ] ウィンドウの [ジェネレーター] セクションで、Expression プロパティを「(M|F)」に設定します。

  10. 列の詳細ペインの [HireDate] をクリックします。

    "ジェネレーター" フィールドは、既定では [DateTime2] に設定されます。

  11. [プロパティ] ウィンドウの [ジェネレーター] セクションで、Max プロパティを今日の日付 (「10/30/2006 11:59:59 PM」など) に設定します。 また、Min プロパティを「1/1/2000 12:00:00 AM」に設定します。

  12. 列の詳細ペインの [VacationHours] をクリックします。

    "ジェネレーター" フィールドは、既定では [SmallInt] に設定されます。

  13. [プロパティ] ウィンドウの [ジェネレーター] セクションで、Distribution プロパティを「Normal」に設定します。

  14. [プロパティ] ウィンドウの [ジェネレーター] セクションで、Max プロパティを「160」に、Min プロパティを「-10」に設定します。

  15. 列の詳細ペインの [ModifiedDate] をクリックします。

    "ジェネレーター" フィールドは、既定では [DateTime2] に設定されます。

  16. [プロパティ] ウィンドウの [ジェネレーター] セクションで、Distribution プロパティを「ExponentialInverse」に設定します。 また、Max プロパティを今日の日付 (「10/30/2006 11:59:59 PM」など) に、Min プロパティを「1/1/2000 12:00:00 AM」に設定します。

生成する行数を調整するには

  1. データ生成計画の [[Person].[Person]] をクリックします。

  2. "挿入行" フィールドに「10」と入力します。

  3. データ生成計画の [HumanResources].[Employee] をクリックします。

  4. "挿入行" フィールドに「25」と入力します。

  5. データ生成計画の [[Person].[StateProvince]] をクリックします。

  6. "関連テーブル" フィールドの [[Person].[CountryRegion]] をクリックします。

  7. "関連テーブルに対する比率" フィールドに「2:1」と入力します。

    この手順により、[Person].[StateProvince] テーブルに [Person].[CountryRegion] テーブルの 2 倍の行数を生成することが指定されます。

  8. [ファイル] メニューの [AWGenPlan.dgen の保存] をクリックし、データ生成計画への変更を保存します。

データの生成をプレビューしてテスト データを生成するには

HumanResources.Employee テーブルには、データの生成を複数回実行した場合にその動作に干渉する可能性のあるトリガーが存在します。 自動化されたテスト実行の一環としてデータの生成を行う場合、単体テストではこれらのトリガーを無効にしておく必要があります (後で有効にします)。

この手順の中でデータの生成を複数回実行する場合は、「データ生成の前後に Employee テーブルのトリガーを有効/無効にするには」で説明されている手順に従う必要があります。 データの生成を 1 回だけ実行する場合は、「データ生成計画の結果を検証するには」の手順に従います。

データの生成をプレビューしてテスト データを生成するには

  1. [データ] メニューの [データ ジェネレーター] をポイントし、[データ生成のプレビュー] をクリックします。

    [データ生成プレビュー] ウィンドウが開き、生成されるデータのサンプルが表示されます。 このデータが、指定した条件を満たしていない場合は、次の手順に進みます。 データ生成計画を調整する必要がある場合は、適宜変更を加えた後でこの手順を繰り返します。

  2. [データ] メニューの [データ ジェネレーター] をポイントし、[データの生成] をクリックします。

    [ターゲット データベースに対するデータの生成] ダイアログ ボックスが表示されます。

  3. [ターゲット データベース] で、AdvWorksSandbox データベースへの接続を作成し、[OK] をクリックします。

  4. "新しいデータを生成する前に、既存のデータをテーブルから削除しますか?" というメッセージが表示されたら、[はい] をクリックします。

    指定した条件に従ってデータが生成されます。 データの生成に成功した場合、すべてのデータが正常に生成されたことを示す緑色のチェック マークが各行に表示されます。 データが生成されなかった場合、[エラー一覧] ウィンドウにエラーが表示されます。

  5. 「データ生成計画の結果を検証するには」の手順に進みます。

データ生成の前後に Employee テーブルのトリガーを有効/無効にするには

  1. データを生成する前に、[データ] メニューの [Transact-SQL エディター] を開き、[新しいクエリ接続] をクリックします。

  2. 分離開発環境のデータベースに対する接続が存在する場合は、手順 7. に進みます。

  3. [新しい接続] をクリックします。

    [接続のプロパティ] ダイアログ ボックスが表示されます。

  4. [サーバー名] で、データベースが配置されているデータベース サーバーの名前 ((local)\SQLExpress など) を入力するかクリックします。

  5. [サーバーにログオンする][Windows 認証を使用する] をクリックします。

  6. [データベースへの接続][データベース名の選択または入力] をクリックし、「AdvWorksSandbox」と入力して [OK] をクリックします。

    接続が作成され、[データベースへの接続] ダイアログ ボックスに表示されます。

  7. [データベースへの接続] ダイアログ ボックスで、分離開発環境のデータベースに対応する接続文字列をクリックし、[OK] をクリックします。

    Transact-SQL エディターが表示され、AdvWorksSandbox データベースに接続できる状態になります。

  8. [OK] をクリックします。

    Transact-SQL エディターが表示されます。

  9. Transact-SQL エディターで、次の Transact-SQL を入力します。

    DISABLE TRIGGER [HumanResources].[dEmployee] ON [HumanResources].[Employee]
    GO
    
  10. Transact-SQL エディター ツール バーの [SQL の実行] をクリックします。

    [メッセージ] タブに次のように表示されます。

    コマンドは、正常に完了しました。

  11. データ生成計画が表示されているウィンドウをクリックします。

  12. [データ] メニューの [データ ジェネレーター] をポイントし、[データ生成のプレビュー] をクリックします。

    [データ生成プレビュー] ウィンドウが開き、生成されるデータのサンプルが表示されます。 このデータが、指定した条件を満たしていない場合は、次の手順に進みます。 データ生成計画を調整する必要がある場合は、適宜変更を加えた後でこの手順を繰り返します。

  13. [データ] メニューの [データ ジェネレーター] をポイントし、[データの生成] をクリックします。

    [ターゲット データベースに対するデータの生成] ダイアログ ボックスが表示されます。

  14. [ターゲット データベース] で、AdvWorksSandbox データベースへの接続をクリックし、[OK] をクリックします。

  15. "新しい行を挿入する前に、選択されたテーブルの内容を消去しますか?" というメッセージが表示されたら、[はい] をクリックします。

    指定した条件に従ってデータが生成されます。 データの生成に成功した場合、すべてのデータが正常に生成されたことを示す緑色のチェック マークが各行に表示されます。 データが生成されなかった場合、[エラー一覧] ウィンドウにエラーが表示されます。

  16. [Transact-SQL エディター] ウィンドウをクリックします。

  17. 通常は、ここでトリガーを再度有効にします。 ただし、単体テストの一部としてトリガーを無効にして再度有効にする必要がないようにデータベース単体テストを簡略化するには、トリガーを無効のままにします。

データ生成計画の結果を検証するには

  1. [データ] メニューの [Transact-SQL エディター] をポイントし、[新しいクエリ] をクリックします。

    [データベースへの接続] ダイアログ ボックスが表示されます。

  2. 分離開発環境のデータベースに対する接続が存在する場合は、手順 8. に進みます。

  3. [新しい接続] をクリックします。

    [接続のプロパティ] ダイアログ ボックスが表示されます。

  4. [サーバー名] で、データベースが配置されているデータベース サーバーの名前 ((local)\SQLExpress など) を入力するかクリックします。

  5. [サーバーにログオンする][Windows 認証を使用する] をクリックします。

  6. [データベースへの接続][データベース名の選択または入力] をクリックし、「AdvWorksSandbox」と入力して [OK] をクリックします。

    接続が作成され、[データベースへの接続] ダイアログ ボックスに表示されます。

  7. [データベースへの接続] ダイアログ ボックスで、分離開発環境のデータベースに対応する接続文字列をクリックし、[OK] をクリックします。

    Transact-SQL エディターが表示され、AdvWorksSandbox データベースに接続できる状態になります。

  8. Transact-SQL エディターで、次のように入力します。

    SELECT * from HumanResources.Employee;
    
  9. F5 キーを押してクエリを実行します。

    結果ペインが表示され、データ生成の結果が表示されます。

  10. [ファイル] メニューの [閉じる] をクリックして、Transact-SQL エディターを閉じます。

    次に、既存のデータベース コードを検証するデータベース単体テストを定義します。

単体テストの定義

通常、すべてのストアド プロシージャ、関数、およびトリガーに対して単体テストを定義します。 このチュートリアルでは、例として 1 つの単体テストのみを定義します。 ufnLeadingZeros 関数と dbo.uspGetManagerEmployees ストアド プロシージャのテストを定義します。

ufnLeadingZeros 関数は整数を受け取り、その整数の VARCHAR(8) 文字列形式を、先頭に 0 を埋め込んで返します。 この関数をテストするには、値を渡し、予期された結果が得られるかどうかをテストします。

uspGetManagerEmployees ストアド プロシージャは従業員 ID を受け取り、指定された ID のマネージャーを経由して報告するすべての階層のすべての従業員を返します。 同じシード値が指定されているときは、データ ジェネレーターは同じテスト データを生成するため、返される行数がわかります。 このテストは単純です。 実際のプロジェクトでは、より詳細なテストを作成して、正しい従業員が返されたかどうかを検証する場合があります。

単体テストを作成するには

  1. [表示] メニューの [スキーマ ビュー] をクリックします。

    スキーマ ビューがまだ表示されていない場合は、表示されます。

  2. スキーマ ビュー[スキーマ] フォルダーを開き、[dbo] フォルダーを開いてから [プログラミング] フォルダーを開きます。

  3. [関数] フォルダーを右クリックし、[単体テストの作成] をクリックします。

    [単体テストの作成] ダイアログ ボックスが表示されます。

  4. 現在の選択範囲のツリーを展開し、dbo.ufnLeadingZeros 関数のチェック ボックスをオンにします。 それ以外の選択されているストアド プロシージャまたは関数のチェック ボックスはオフにします。

    注意

    プロジェクトに実際のベースラインを確立する場合、データベースのすべての関数、ストアド プロシージャ、およびトリガーに対して単体テストを作成することもあります。 このチュートリアルでは、プロセスのデモンストレーションのため、1 つの関数に注目します。

  5. [プロジェクト][新しい Visual C# テスト プロジェクトの作成] をクリックします。

  6. [新しいプロジェクト名] で、「AWSandboxTestProject」と入力し、[OK] をクリックします。

    単体テスト プロジェクトが作成され、単体テストの [プロジェクト構成] ダイアログ ボックスが表示されます。

  7. [データベース接続] の AdvWorksSandbox への接続をクリックします。

  8. [配置][単体テストの実行前に自動的にデータベース プロジェクトを配置] チェック ボックスをオフにします。

  9. [データベース状態][単体テスト実行前にテスト データを生成] チェック ボックスをオンにします。

  10. [データベース状態] ボックスの一覧で、[AWGenPlan.dgen] をクリックします。

  11. [テスト データの生成前にデータベースをクリア] チェック ボックスがまだオンになっていない場合はオンにし、[OK] をクリックします。

    データベース単体テスト プロジェクトが作成され、ソリューションに追加されます。 データベース単体テスト デザイナーが開いて、テスト条件を変更し、テストを作成できるようになります。

    注意

    テスト構成を変更する必要がある場合は、[テスト] メニューを開き、[データベース テスト構成] をクリックします。 [プロジェクト構成] ダイアログ ボックスが表示され、構成を変更できます。

    次に、テスト条件を指定し、テストを作成します。

ufnLeadingZeros 関数の単体テストを定義するには

  1. データベース単体テスト デザイナーのテスト一覧で、[dbo.ufnLeadingZeros] をクリックします。

  2. 2 番目の一覧に [Test] と表示されていることを確認します。

  3. デザイナーの上部のペインで、Transact-SQL ステートメントを次のように置き換えます。

    -- db unit test for dbo.ufnLeadingZeros
    DECLARE @RC VARCHAR (8),
    @Value INT
    
    SELECT @RC = NULL,
    @Value = 27
    
    SELECT @RC = [dbo].[ufnLeadingZeros]( @Value)
    
    IF @RC <> '00000027' 
    RAISERROR(N'ufnLeadingZero: expected "00000027" but got %s.', 16, 1, @RC)
    
    SELECT RC=@RC
    
  4. テスト条件ペインで、種類が [結果不確定] のテスト条件をクリックし、[テスト条件を削除します] (x) をクリックして削除します。

  5. [テスト条件] ペインのボックスの一覧で、[行数] をクリックし、[テスト条件を追加します] (+) をクリックして行数テスト条件を追加します。

  6. [プロパティ] ウィンドウで、[行数] プロパティを 1 に設定します。

    テストを強制的に失敗させる場合、@Value を 27 から別の値に変更します。

    これで、単体テストを実行できるようになりました。

単体テストのビルドと実行

単体テストの定義が完了したので、テストをビルドして実行できます。

単体テストをビルドして実行するには

  1. ソリューション エクスプローラーで、ソリューション ノードを右クリックし、[ソリューションのリビルド] をクリックします。

    この手順では、データベース プロジェクトおよび単体テスト プロジェクトを強制的にリビルドして、すべてが最新になるようにします。

  2. [テスト] メニューの [ウィンドウ] をポイントし、[テスト リスト エディター] をクリックします。

    [テスト ビュー] ウィンドウにテストがいくつか表示されます。 ManualTest1 および TestMethod1 という名前のテストは、既定で作成されたテストです。 dbo_ufpLeadingZeroTest という名前のテストは、このチュートリアルで作成したテストです。

  3. dbo_ufpLeadingZeroTest のチェック ボックスをオンにし、右クリックして、[選択されたテストを実行] をクリックします。

  4. [テスト結果] ウィンドウの結果を確認します。

    分離開発環境にデータベース プロジェクトが配置され、テスト データが生成され、テストが実行されて合格します。

保留中の変更のチェックイン

これで、変更によってデータベースが破損するかどうかを検出する単体テストが定義できたので、テストをチェックインして、ソリューションをチームと共有できるようになりました。

ソリューションをチームと共有するには

  1. [表示] メニューの [その他のウィンドウ] をポイントし、[保留中の変更] をクリックします。

    [保留中の変更] ウィンドウが表示されます。

  2. [コメント] に、「Defined data generation plan and baseline unit tests」と入力します。

  3. [保留中の変更] ウィンドウで、ツール バーの [チェックイン] をクリックします。

    データベース プロジェクトおよびそれに含まれているファイルがバージョン管理されるときに、[チェックインの進行状況] ダイアログ ボックスが表示されます。 ソリューション エクスプローラー内のアイコンが更新され、ファイルがバージョン管理にチェックインされたことを示します。

次の手順

これで、ソリューションをバージョン管理にチェックインしたので、チームの各メンバーは、各自に割り当てられたタスクの作業を行うことができます。 各メンバーは、変更を共有できるようになるまで、分離データベース開発環境で作業することができます。

チュートリアル: 分離開発環境でデータベースの開発を繰り返し実行する」では、リファクタリングを使用して、分離開発環境のデータベース オブジェクトの名前を変更します。 チェックインの前に変更内容をビルド、配置、およびテストでき、チームの他のメンバーは各自の分離開発環境に自身の変更内容を同期できます。

参照

処理手順

チュートリアル: 分離開発環境でデータベースの開発を繰り返し実行する

概念

データ ジェネレーターを使用したデータベースのテスト データの生成

単体テストを使用したデータベース コードの検証

データベースのビルドおよび分離開発環境への配置

データベース プロジェクト設定の概要

履歴の変更

日付

履歴

理由

SQL Server 2008 R2 と AdventureWorks2008R2 のサポートを追加。 また、お客様からのフィードバックで指摘されたデータ生成および単体テストの問題も修正。

SP1 機能変更