疑難排解資料庫單元測試問題
當您針對資料庫執行單元測試時,可能會遇到本主題所述的問題:
執行單元測試或產生測試資料時,權限不足
執行單元測試時,忽略了單元測試和 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>