我想爲我的n層web應用程序創建一堆MS visual studio單元測試,但由於某種原因,我無法運行這些測試測試和我碰到下面的錯誤 -ASP.NET項目的單元測試問題(運行測試時出現NullReferenceException)
我想要做的就是我用我的數據訪問層的測試
「不設置到對象的實例 對象引用」 LINQ數據上下文類來執行某個函數並返回結果,但是在調試過程中,我發現所有的測試都儘快失敗因爲他們到達LINQ數據上下文類,它與連接字符串有關,但我無法弄清楚是什麼問題。
測試調試這裏失敗(第二行):
public EICDataClassesDataContext() : base(global::System.Configuration.ConfigurationManager.ConnectionStrings["EICDatabaseConnectionString"].ConnectionString, mappingSource) { OnCreated(); }
而且我的測試如下:
TestMethod()] public void OnGetCustomerIDTest() { FrontLineStaffDataAccess target = new FrontLineStaffDataAccess(); // TODO: Initialize to an appropriate value string regNo = "jonh"; // TODO: Initialize to an appropriate value int expected = 10; // TODO: Initialize to an appropriate value int actual; actual = target.OnGetCustomerID(regNo); Assert.AreEqual(expected, actual); }
這是我從DAL調用的方法是:
public int OnGetCustomerID(string regNo) { using (LINQDataAccess.EICDataClassesDataContext dataContext = new LINQDataAccess.EICDataClassesDataContext()) { IEnumerable<LINQDataAccess.GetCustomerIDResult> sProcCustomerIDResult = dataContext.GetCustomerID(regNo); int customerID = sProcCustomerIDResult.First().CustomerID; return customerID; } }
所以基本上所有的東西在到達DA層方法的第一行之後都失敗了,當它試圖實例化t他LINQ數據訪問類...
我花了大約10個小時試圖解決問題,但沒有結果......我真的很感激任何幫助!
UPDATE: 最後,我已經解決了這個問題!!!! :)我不知道爲什麼,但在App.config一些原因文件到我的數據庫連接後如下:
AttachDbFilename = | DataDirectory | \ EICDatabase.MDF
所以我所做的只是改變了路徑,而不是| DataDirectory |我把在我的MDF文件位於實際的路徑,即
C:\用戶\ 1 \文檔\ Visual Studio 2008的\項目\ EICWebSystem \ EICWebSystem \ App_Data文件\ EICDatabase.mdf
後,我但仍然有點不清楚是什麼問題......可能是數據庫的不正確路徑?ASP.NET項目的web.config包含| DataDirectory | \ EICDatabase.MDF路徑,儘管..
嘿亞歷克斯,看看這個http://stackoverflow.com/questions/236412 /連接字符串 - 地獄在網絡LINQ - SQL - ASP - NET 希望它可以幫助你。 – Malcolm 2010-05-25 15:07:05
我試圖創建測試項目目錄下的app_config文件,然後我只是將web.config文件的'Connectionstrings'部分複製到此app.config文件中,並在運行測試後得到了一個不同的異常:「System.Data.SqlClient.SqlException:試圖爲文件C:\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ EICDatabase.mdf附加自動命名的數據庫失敗。具有相同名稱的數據庫存在,或指定的文件無法打開,或者它位於UNC共享上。「我做錯了嗎?還是另外一個新問題? – Alex 2010-05-25 15:23:12