Share via


接続文字列とアクセス許可の概要

データベース単体テストを実行するには、1 つまたは 2 つの特定の接続文字列を使用して、データベース サーバーに接続する必要があります。 各接続文字列は、特定のスクリプトで、タスクまたはタスクのセットをテストの一部として実行するために必要な特定のアクセス許可を持つアカウントを表します。 これらの文字列は、[プロジェクト構成] ダイアログ ボックスで指定することも、テスト プロジェクトの app.config ファイルを手動で編集して指定することもできます。

接続文字列

[プロジェクト構成] ダイアログ ボックスでは、次のアカウントごとに接続文字列を指定できます。

注意

実行コンテキストと特権コンテキストは、SQL Server 認証を使用する場合にのみ違いが現れます。 Windows 認証を使用する場合、両方の接続文字列に同じ資格情報が使用されます。

  • 実行コンテキスト (必須) : テスト スクリプトを実行するためのユーザー アカウント。 この接続文字列には、ユーザーが使用するのと同じ資格情報が必要です。 これによって適切なアクセス許可がデータベースに適用されていることを確認できるので、重要なものです。 詳細については、「方法 : データベース単体テストの実行を構成する」を参照してください。

    テスト プロジェクトの app.config ファイルでは、これは ExecutionContext 要素になります。

  • 特権コンテキスト (省略可能) : テスト前アクション、テスト後アクション、TestInitialize、および TestCleanup の各スクリプトを実行するための、より高いアクセス許可を持つアカウント。 これらのスクリプトはデータベース状態を設定します。テスト後アクション用のスクリプトはデータベース内のオブジェクトの検証に使用できます。 この接続文字列は、データベースの変更の配置およびデータの生成にも使用されます。

    テスト プロジェクトの app.config ファイルでは、これは PrivilegedContext 要素になります。 データベース単体テストがテスト スクリプトのみを実行する場合、特権コンテキストを指定する必要はありません。

[プロジェクト構成] ダイアログ ボックスで指定した文字列は、テスト プロジェクトの app.config ファイルに格納されます。 そのファイルを直接編集し、プロジェクトをリビルドすることもできます。その場合、新しい値がダイアログ ボックスに表示されます。

Windows 認証と SQL 認証

接続文字列を指定する場合、Windows 認証と SQL 認証のどちらを使用するかを選択する必要があります。 Windows 認証を選択する理由の 1 つは、テストをチームで使用することに対するサポートが、SQL 認証よりも優れていることです。 SQL 認証を選択した場合、接続文字列はユーザー資格情報に基づいて、データ保護 API (DPAPI: Data Protection API) を使用して暗号化されます。 つまり、このテスト プロジェクト内のテストはユーザーだけのために実行されます。ユーザーがチェックインした後にソース管理システムを介してそれらのテストを取得したチーム メンバーには実行されません。 チームの他のメンバーがこのテスト プロジェクト内のテストを実行するには、それぞれの資格情報を使用してテスト プロジェクトを再構成する必要があります。 これを行うには、app.config ファイルのコピーを編集するか、[プロジェクト構成] ダイアログ ボックスを使用します。

アクセス許可

テスト スクリプトは、実行コンテキストのアクセス許可レベルで実行されます。これは、データベースで実行されるユーザー コマンドに対して、通常の使用時に有効なレベルと同じアクセス許可レベルです。 テスト前アクション、テスト後アクション、TestInitialize、および TestCleanup の各スクリプトは、特権コンテキストのアクセス許可レベルで実行されます。

テスト後アクションのスクリプトに使用される接続は、アクセス許可のレベルが高いため、検証を実行できます。 このスクリプトでは、アクセス許可をテストするスクリプト コマンドを実行することもできます。 アクセス許可の詳細については、「Visual Studio のデータベース機能に必要なアクセス許可」のデータベース単体テストに関するセクションを参照してください。

参照

概念

データベース単体テストのスクリプト

データベース単体テスト ファイル