Я написал несколько модульных тестов, которые зависят от файла конфигурации.Этот file.config
развертывается в каталоге bin\Debug
моего тестового проекта.Однако, похоже, что он не копируется в мой каталог с результатами выходного теста, в котором фактически выполняется тест.
Я искал и обнаружил следующее:
TFS UnitTesting не развертывает сборку локальной копии вdir test, когда на сервере сборки
Тестовый проект и файл конфигурации
Первая ссылка позволила мне узнать, как развернуть файл конфигурации в моем тестовом проекте bin\Debug
каталог.
Второй представляет рабочее решение, хотя я нахожу его немного излишним для своих нужд, не говоря уже о том, что я добавляю себе класс для тестирования и т. д. Итак, я бы предпочел более простой подход, который мог быпросто позвольте мне автоматически скопировать этот конфигурационный файл в каталог с результатами моего теста.
РЕДАКТИРОВАТЬ # 1
Я использую:
- Microsoft Enterprise Library 4.1 вместе с именованными соединениями;с
- Microsoft Visual Studio 2008;и
- Microsoft UnitTest Framework.
Мой файл конфигурации выглядит следующим образом:
<configuration>
<configSections>
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</configSections>
<dataConfiguration defaultDatabase="Tests" />
<connectionStrings>
<add name="Tests" connectionString="Database=Tests;Server=(local)\SQLEXPRESS;Integrated Security=SSPI"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
и имеет имя: Tests.config
.
Теперь у меня есть настройки проекта, которые содержат параметр DefaultSource
, который содержит имя источника по умолчанию, то есть, для которого создаются соединения и объекты баз данных.Значение этого параметра: Tests
.
Итак, когда я создаю новое соединение, я просто делаю это так:
public static IDbConnection CreateConnection(string source) {
return new DatabaseProviderFactory(new FileConfigurationSource(
string.Format("{0}\{1}.config", AppDomain.CurrentDomain.BaseDirectory, source)
).CreateDefault().CreateConnection();
}
Теперь, это то, что не работает должным образомво время модульного тестирования, из-за значения AppDomain.CurrentDomain.Basedirectory
, которое возвращается.Поскольку это свойство не возвращает каталог сборки сборки bin\Debug
, а скорее TestResults[auto-generated-test-results-directory]
, где на самом деле выполняются тесты.
Итак, когда в моем тесте я делаю:
[TestMethod()]
public void Connection_InitializationWithSourceName() {
using connection as IConnection = ConnectionProviderFactory.CreateConnection(DefaultSource) {
// Asserts here...
}
}
свойство DefaultSource
вернет мой параметр настройки источника по умолчанию, значение которого Tests
.Итак, объектный класс FileConfigurationSource
будет искать файл с именем Tests.config
в каталоге результатов теста, в котором фактически выполняются тесты, как указано ранее.
Есть идеи, как это сделать?
Спасибо!=) * +1063 *