我在這裏看到了幾個處理類似問題的問題,但他們都沒有幫助我。由於企業庫導致的NUnit測試失敗
我在MVC 3項目中使用了VS 2010中的NUnit。 我有一個測試項目,並正在寫我的第一個測試Evar! :-)
你不自豪我終於開始了嗎?!
這裏是我得到
Microsoft.Practices.ServiceLocation.ActivationException錯誤:嘗試獲取類型的數據庫實例發生激活 錯誤,關鍵 「MyConnection的」 ----> 微軟.Practices.Unity.ResolutionFailedException:解決方案 依賴項失敗,類型= 「Microsoft.Practices.EnterpriseLibrary.Data.Database」,名稱= 「MyConnection」。發生異常時:解析時。例外是: InvalidOperationException - 無法構造數據庫類型。 您必須配置容器以提供此值。
我已經配置了web.config
這一切,當在測試未運行數據返回完美,所以我知道它不是每CE垂死的配置,與NUnit的使用時,它只是死亡。
這是我的聯繫方式:
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
...
<dataConfiguration defaultDatabase="MyConnection" />
<connectionStrings>
<add name="MyConnection" connectionString="Data Source=MyServerName;Initial Catalog=MyDB;user id=MyUser;password=MyPassword"
providerName="System.Data.SqlClient" />
</connectionStrings>
我一直在使用的NuGet也做一個乾淨的手動參考安裝DAAB。無論哪種方式,數據加載罰款在正常使用的情況,但在測試中會死在這行:
var database = DatabaseFactory.CreateDatabase("MyConnection");
在這種方法中
public IEnumerable<SchoolSearchResultsDTO> Find(SchoolSearchInputDTO dto) {
List<SchoolSearchResultsDTO> fullList;
var database = DatabaseFactory.CreateDatabase("MyConnection");
using (var command = database.GetStoredProcCommand("dbo.usp_School_SearchBySchoolName")) {
database.AddInParameter(command, "@I_strSchoolName", DbType.String, dto.SearchTerm);
database.AddInParameter(command, "@I_intNumberOfRecords", DbType.Int32, dto.MaxSearchResults);
using (var reader = database.ExecuteReader(command)) {
fullList = new List<SchoolSearchResultsDTO>();
while (reader.Read()) {
var fullRecord = new SchoolSearchResultsDTO();
fullRecord.SchoolID = reader.GetInteger("SchoolId");
fullRecord.SchoolName = reader.GetString("SchoolName");
fullRecord.IsDetailedDisplayMode = reader.GetBoolean("IsDetailedDisplayMode");
fullList.Add(fullRecord);
}
reader.Close();
}
}
return fullList;
}
所有其他職位說說配置錯誤等。我敢確定我配置正確,否則我不會在正常使用情況下獲取數據。所以它與NUnit和DaaB在一起。
任何好點子? :-) 謝謝大家!
偉大的信息!謝謝!我從來沒有真正想到我的測試項目需要任何特殊的配置。我想我在我的嘗試中仍然在這裏掙扎。 –
將一個app.config添加到測試項目修復它:-)感謝您的信息。順便說一下,我有這本書,還沒有開始它,但剛剛在TekPub昨天在TekPub上開始了TDD碩士課程(由本書的作者Roy Osherove),並一直跟隨,直到我掛斷了這個。感謝您的支持! :-) –
好東西夥伴,TDD將是您編碼方式中最大的改變。在最初的幾個障礙之後,我認爲你會發現它會使你更有效率。 –