Я видел здесь несколько вопросов, касающихся подобных проблем, но ни один из них не помог мне.Тесты NUnit терпят неудачу из-за корпоративной библиотеки
Я использую NUnit с VS 2010 в проекте MVC 3. У меня есть проект Tests и я пишу свои первые тесты Evar! :-)
Вы не гордитесь, я, наконец, добираюсь до него ?!
Здесь ошибка я получаю
Microsoft.Practices.ServiceLocation.ActivationException: произошла активация ошибка при попытке получить экземпляр базы данных типа, ключ "MyConnection" ----> Microsoft .Practices.Unity.ResolutionFailedException: Разрешение ошибка с ошибкой, тип = «Microsoft.Practices.EnterpriseLibrary.Data.Database», name = «MyConnection». Исключение произошло во время: при разрешении. Исключение: InvalidOperationException - База данных типа не может быть построена. Вы должны настроить контейнер для подачи этого значения.
Я настроил web.config
со всем этим, и данные возвращается прекрасно, когда он не работает в тесте, так что я знаю, что это не конфиг, который умирает за се, это просто умирает при использовании 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>
Я установил Daab используя NuGet, а также делать чистую ручную ссылку. В любом случае, загружает данные штраф в нормальных условиях эксплуатации, но в тестировании он умирает на этой линии:
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 в тестовый проект исправлено :-) Спасибо за информацию. Кстати, у меня есть книга, еще не запустила ее, но только начала мастер-курс TDD (автор книги, Рой Ошероув) на TekPub вчера и следовал за мной, пока я не повесил трубку. Спасибо за ногу! :-) –
Хороший помощник, TDD станет самым большим изменением в том, как вы кодируете. После первых нескольких препятствий, я думаю, вы обнаружите, что это сделает вас намного более продуктивными. –