疑難排解資料庫單元測試問題

當您針對資料庫執行單元測試時,可能會遇到本主題所述的問題:

  • 執行單元測試或產生測試資料時,權限不足

  • 執行單元測試時,忽略了單元測試和 App.Config 的變更

  • 執行單元測試時,將資料庫部署至未預期的目標

  • 執行資料庫單元測試時發生逾時

執行單元測試或產生測試資料時,權限不足

您可以設定單元測試來自動部署資料庫及產生資料。 如果您的權限不足以對目標資料庫產生資料,您可能會收到錯誤,指示您的權限不足,無法連接到資料庫。

注意事項注意事項

若要解決此問題,請手動執行「資料產生計劃」(Data Generation Plan)。 如果您的權限不足以產生資料,這個方法將會提供您更詳細的錯誤訊息,以幫助您修正此問題。

執行單元測試時,忽略了單元測試和 App.Config 的變更

如果您在測試專案中修改 App.Config 檔,您必須先重建此測試專案,才能讓這些變更生效。 這些變更包括使用 [專案組態] 對話方塊對 App.Config 所做的變更。 如果您不重建測試專案,則當您執行單元測試時,將不會套用這些變更。

執行單元測試時,將資料庫部署至未預期的目標

如果您在執行單元測試時部署資料庫,則會使用單元測試組態中所指定的連接字串資訊來建立此資料庫。 資料庫專案建置屬性中所指定的連接資訊不會用於這項工作,所以您可以針對相同資料庫的不同執行個體來執行不同的單元測試。

執行資料庫單元測試時發生逾時

如果資料庫單元測試因為逾時而失敗,您可以更新資料庫專案內的 app.config 檔案,以增加逾時的時間。 連接字串的逾時會指定當單元測試與伺服器連接時,要等候的時間。 命令逾時會指定當單元測試執行 Transact-SQL 指令碼時,要等候的時間。

注意事項注意事項

若要解決此問題,請在測試專案的 app.config 檔案內,對適當的 Context 項目指定較大的 CommandTimeout 屬性值。 例如,若要為 PrivilegedContext 項目指定 120 秒的指令逾時,請如下所示更新 app.config:

<DatabaseUnitTesting>
    <DatabaseDeployment DatabaseProjectFileName="test.dbproj" Configuration="Debug" />
    <DataGeneration DataGenerationFileName="test.dgen" ClearDatabase="true" />
    <ExecutionContext Provider="System.Data.SqlClient" ConnectionString="another connection string" />
    <PrivilegedContext Provider="System.Data.SqlClient" ConnectionString="test" CommandTimeout="120" />
</DatabaseUnitTesting>

請參閱

工作

HOW TO:為函式、觸發程序和預存程序建立資料庫單元測試

HOW TO:設定資料庫單元測試執行