方法 : データベース単体テストの実行を構成する
このトピックの内容は、次の製品に該当します。
Visual Studio Ultimate |
Visual Studio Premium |
Visual Studio Professional |
Visual Studio Express |
---|---|---|---|
テスト プロジェクトを構成すると、データベース単体テストの実行方法を制御する設定をいくつか指定することができます。 この構成設定は、テスト プロジェクトの app.config ファイルに格納されます。 このファイルを直接編集すると、新しい値は [プロジェクト構成] ダイアログ ボックスに表示されます。
ソリューションには複数のテスト プロジェクトを含めることができます。 各テスト プロジェクトには app.config ファイル (1 セットの構成設定) が 1 つ含まれています。 したがって、ソリューションには、異なる実行方法に設定したさまざまなデータベース単体テストをテスト プロジェクトごとに 1 セット含めることができます。
これらの設定によって、テスト対象データベースへのテスト接続方法、データベース プロジェクトからデータベースへのスキーマの配置方法、およびデータ生成計画を使用してデータベースにデータを設定するかどうかを、次のように制御します。
データベース接続。 この設定は、テスト対象データベースへの接続に使用する接続文字列を指定するために使用します。 詳細については、「接続文字列の指定」を参照してください。
スキーマ配置。 データベース プロジェクトは、データベースのオフライン表現です。 データベース プロジェクトでは、データベース オブジェクトの構造が表されますが、データは含まれていません。 データベース プロジェクトでスキーマを変更した後に、実際のデータベースで変更をテストすることができます。 スキーマ配置の手順で、データベース プロジェクトからテストを実行するデータベースに、テストするデータベース オブジェクトがコピーされます。 スキーマ配置の詳細については、「データベース スキーマの配置」を参照してください。
データベース状態。 データベースのテスト データを生成すると、テスト実行を開始する前にデータベースの状態を設定できます。 TestInitialize スクリプトのバックアップ コピーからデータベース状態を復元して、状態を設定することもできます。 この方法の詳細については、「データベース単体テストのスクリプト」を参照してください。
生成するデータを指定するには、データ生成計画を作成し、その中でテスト データを含むテーブルと列を指定します。 データの形式も指定します。 たとえば、電話番号の適切な桁数の生成や、セキュリティ保護のために書き換えたテスト データのデータベースからの架空の顧客名のインポートができます。 詳細については、「データ生成計画の使用」を参照してください。
注意
テストは、ソリューション フォルダーではなく、ローカル ハード ディスクにある別個のフォルダーで実行されます。 テスト配置の特徴を構成することはできますが、データベース単体テストの場合は通常は構成する必要がありません。 テスト配置の詳細については、「テストの実行」を参照してください。
接続文字列の指定
データベース接続文字列を指定するには
[テスト] メニューの [データベース テスト構成] をクリックします。
[プロジェクト 'TestProject' の構成] ダイアログ ボックスが表示されます。
[データベース接続] の下で、以下を実行できます。
単体テストを実行する対象のデータベース接続をクリックします。
テストの実行を異なるデータベース接続に対して検証する場合は、[セカンダリ データ接続を使用して単体テストを検証] チェック ボックスをオンにし、一覧にあるデータベース接続の 1 つをクリックします。
[新しい接続] をクリックして接続をいずれかの一覧に追加します。 [接続の編集] をクリックして既存の接続の設定値を変更することもできます。
この手順では ExecutionContext 接続文字列を作成します。この文字列はデータベース単体テストのテスト スクリプトの実行に使用されます。 セカンダリ接続も指定した場合は、PrivilegedContext 接続文字列も作成されます。 この接続は、データベース単体テストのテスト スクリプトの外部でのデータベースとの対話をテストするために使用されます。 詳細については、「接続文字列とアクセス許可の概要」を参照してください。
[OK] をクリックして [プロジェクト 'TestProject' の構成] ダイアログ ボックスを閉じます。
構成の変更を適用するテスト プロジェクトを再度ビルドします。
データベース スキーマの配置
データベース プロジェクトのスキーマをデータベースに配置するには
ソリューション エクスプローラーで、データベース プロジェクトを右クリックし、[ビルド] をクリックします。
データベース プロジェクトをビルドする場合は、Transact-SQL スクリプトを生成します。 このスクリプトをデータベースに対して実行すると、そのデータベース内にデータベース プロジェクトの構造が再作成されます。
構成するテスト プロジェクトを選択します。
[テスト] メニューの [データベース テスト構成] をクリックします。
[プロジェクト 'TestProject' の構成] ダイアログ ボックスが表示されます。
[配置] の下で、以下を実行できます。
[テスト実行前にデータベース プロジェクトを自動配置] チェック ボックスをオンにして、テスト実行前にデータベース プロジェクトに対するスキーマ変更が確実にコミットされるようにします。
[データベース プロジェクト] の下で、配置するデータベース プロジェクトをクリックするか、省略記号をクリックして別のプロジェクトを参照します。 データベース プロジェクト ファイルの拡張子は .dbproj です。
[配置構成] の下で、配置するプロジェクト構成をクリックします。 選択肢は、[デバッグ]、[既定値]、または [リリース] です。 ただし、単体テストの構成を作成する場合は、その構成もオプションとして表示されます。
[OK] をクリックして [プロジェクト 'TestProject' の構成] ダイアログ ボックスを閉じます。
テスト実行の開始時に、手順 1. で生成した Transact-SQL スクリプトが実行されます。このアクションで、スキーマをターゲット データベースに配置します。
構成の変更を適用するデータベース単体テスト プロジェクトを再度ビルドします。
注意
データ生成を使用しているときに、スキーマを単体テスト プロジェクトの一部として配置する場合は、[データ損失が発生する場合に増分配置をブロック] チェック ボックスをオフにします。 このチェック ボックスは、データベース プロジェクトのプロパティの [ビルド] タブに表示されます。 スキーマの配置を試行する前にこのチェック ボックスをオフにしておかないと、配置が失敗します。 詳細については、「方法 : 既存データベースへの配置中のデータ損失を管理する」を参照してください。
データ生成計画の使用
データベース単体テストと一緒にデータ生成計画を使用するには
データ生成計画を作成します。 詳細については、「方法 : データ生成計画を作成する」を参照してください。
データ生成計画でデータを設定するテーブルを指定します。 詳細については、「方法 : データ生成用のテーブルを指定する」を参照してください。
テーブル内のデータを設定する列を指定します。 詳細については、「方法 : データを生成する列を指定する」を参照してください。
データ生成計画を保存し、その名前を書き留めます。
ソリューション エクスプローラーで、構成するテスト プロジェクトをクリックします。
[テスト] メニューの [データベース テスト構成] をクリックします。
[プロジェクト 'TestProject' の構成] ダイアログ ボックスが表示されます。
[データベース状態] の下で、以下を実行します。
[単体テスト実行前にテスト データを生成] チェック ボックスをオンにして、テスト実行前にデータベース プロジェクトにデータ生成計画を適用します。 データ生成計画の拡張子は .dgen です。
一覧で適用するデータ生成計画をクリックするか、省略記号をクリックして計画を参照します。
[テスト データ生成前にデータベースをクリア] チェック ボックスをオンにして、指定したデータベース プロジェクト内の既存のテスト データベースを上書きします。
[OK] をクリックして [プロジェクト 'TestProject' の構成] ダイアログ ボックスを閉じます。
データ生成計画を呼び出すコードが、テスト プロジェクトの AssemblyInitialize メソッドに追加されます。このメソッドは "DatabaseSetup.cs" または "DatabaseSetup.vb" という名前のファイル内にあります。 単体テストを今すぐ実行すると、テスト実行の開始時に、データ生成計画によってデータベースに 1 度だけデータが設定されます。
注意
テスト データの生成の結果を元に戻すことはできません。
(オプション) テスト実行でこのデータ生成計画を複数回使用するには、AssemblyInitialize メソッドから計画を呼び出すコードをコピーし、データベース単体テストの他のメソッドに貼り付けます。
構成の変更を適用するテスト プロジェクトを再度ビルドします。