我們使用實體框架5.如何設置的LocalDB單元測試在Visual Studio 2012和Entity Framework 5
有跡象表明,依賴於數據庫的一些單元測試一個Visual Studio 2012的ASP.NET MVC項目。在測試項目中設置app.config文件以使用中央SQL Server數據庫可以正常工作。
但是,使用LocalDb會更好,因此每個開發人員在運行測試時都有自己的數據庫。特別是因爲我們希望在運行時將測試設置爲DropCreateDatabaseAlways
。
但是,我無法使安裝程序正常工作。如果我嘗試這的app.config:
<add name="TestDb"
connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=unittestdb;
Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\unittestdb.mdf"
providerName="System.Data.SqlClient" />
我得到:
System.Data.SqlClient.SqlException:發生文件激活錯誤。 物理文件名'\ unittestdb.mdf'可能不正確。診斷 並更正其他錯誤,然後重試該操作。 CREATE DATABASE失敗。列出的某些文件名不能被創建。檢查 相關錯誤。
聽起來好像它想要mdf文件已經存在,這似乎很奇怪,因爲它試圖創建數據庫。手動創建mdf文件不會更改錯誤消息。
你可以檢查你有什麼樣的價值在單元測試時,你調用:'AppDomain.CurrentDomain.GetData(「DataDirectory」)'? –
單元測試中'AppDomain.CurrentDomain.GetData(「DataDirectory」)'的值爲'null'。 –
因此,要麼通過使用'SetData'將值設置爲某個路徑,要麼不要在連接字符串中使用'| DataDirectory |',因爲它是'null'。 –