次の方法で共有


SQL Server データベースの単体テストに関する問題のトラブルシューティング

データベースで 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>