データベースで SQL Server の単体テストを使用すると、次の問題が発生する可能性があります。
単体テストを実行すると、単体テストと app.config の変更は無視されます
テスト プロジェクトの app.config ファイルを変更する場合は、変更を有効にする前にテスト プロジェクトをリビルドする必要があります。 これらの変更には、[app.config] ダイアログ ボックスでに加えた変更が含まれます。 テスト プロジェクトをリビルドしない場合、単体テストの実行時に変更は適用されません。
単体テストの実行時に予期しないターゲットにデータベースをデプロイする
単体テストの実行時にデータベース プロジェクトからデータベースを配置する場合、単体テスト構成で指定された接続文字列情報を使用してデータベースが配置されます。 データベース プロジェクトのデバッグ プロパティで指定されている接続情報は、このタスクでは使用されません。これにより、同じデータベースのさまざまなインスタンスに対して SQL Server 単体テストを実行できます。
データベース単体テストを実行するときのタイムアウト
タイムアウトが原因でデータベースの単体テストが失敗する場合は、テスト プロジェクトの app.config ファイルを更新することで、タイムアウト期間を長くできます。 接続文字列で定義されている接続タイムアウトは、単体テストがサーバーに接続するまでの待機時間を指定します。
app.config ファイルで直接定義する必要があるコマンド タイムアウトは、単体テストで Transact-SQL スクリプトが実行されるまでの待機時間を指定します。 実行時間の長い単体テストで問題が発生した場合は、適切なコンテキスト要素でコマンド タイムアウト値を増やしてみてください。 たとえば、 PrivilegedContext 要素に 120 秒のコマンド タイムアウトを指定するには、次のように app.config を更新します。
<SqlUnitTesting_VS2010>
<DatabaseDeployment
DatabaseProjectFileName="..\..\..\..\..\..\Visual Studio 2010\Projects\Database10\Database10\AdventureWorks.sqlproj"
Configuration="Debug" />
<DataGeneration ClearDatabase="true" />
<ExecutionContext Provider="System.Data.SqlClient"
ConnectionString="Data Source=(LocalDB)\Projects;Initial Catalog=AdventureWorks_Test;Integrated Security=True;Pooling=False"
CommandTimeout="30" />
<PrivilegedContext Provider="System.Data.SqlClient"
ConnectionString="Data Source=(LocalDB)\Projects;Initial Catalog=AdventureWorks_Test;Integrated Security=True;Pooling=False"
CommandTimeout="120" />
</SqlUnitTesting_VS2010>