Подтвердить что ты не робот

App.config в тестовых проектах

Я создаю приложение ASP.NET в VS2010. У меня есть несколько отдельных сборок (библиотеки классов) и соответствующие тестовые проекты для каждого.

В одной из библиотек классов я использую файл App.config для сохранения настроек. Сама сборка использует следующий код для извлечения настроек:

 string tmp = ConfigurationManager.AppSettings["mySetting"];

Проблема заключается в том, что когда я пытаюсь создать Unit Test в отдельном тестовом проекте, тест не подбирает параметр в файле App.config. Если я копирую файл App.config в проект тестирования, он работает.

Как я могу гарантировать, что каждая сборка использует свою собственную копию файла App.config. Это создало бы проблемы, если бы мне пришлось копировать файлы конфигурации. Есть еще одна проблема, потому что может быть несколько конфигурационных файлов, по одному на сборку - как все они могут сосуществовать в одном тестовом проекте?

Спасибо!

4b9b3361

Ответ 1

Хорошо, если вам нужен файл App.config, совместно используемый в нескольких проектах, я просто "Добавить как ссылку" исходный файл App.config в каждом проекте.

Скажем, у вас есть ProjectA с исходным App.config. Затем у вас есть ProjectATest1 и ProjectATest2. В каждом проекте TestX:

  • щелкните правой кнопкой мыши по имени решения в Visual Studio
  • выберите "Добавить существующий элемент"
  • перейдите в ProjectA App.config и выберите его
  • нажмите кнопку "Добавить" вниз.
  • выберите "Добавить как ссылку"

Он создаст ярлык App.config в каждом проекте TestX. Если вы измените его, он будет меняться повсюду.

Надеюсь, что это поможет.

Ответ 2

Прежде всего, если вы проводите модульное тестирование, то вы, вероятно, захотите посмотреть на издевательство над конфигурацией, а не на ее чтение.

Если вы действительно хотите сделать конфигурацию доступной (я уже делал ее для тестов интеграции в прошлом), вы можете добавить шаг сборки после сборки (я предполагаю, что отображение 1-1 сборки к тестовым сборкам).

Шаг post build (на вашей тестовой сборке) будет выглядеть примерно так:

  copy /y  "<path to your assembly under test>.dll.config" "$(TargetDir)\$(TargetName).dll.config"

По сути, вы копируете app.config, который был переименован для вас визуальной студией для тестируемой сборки, чтобы соответствовать ожидаемому имени конфигурации для вашей тестовой сборки.

Ответ 3

Не нужно иметь конфигурационные файлы для сборок. Если вы это сделаете, каждое приложение будет иметь один файл конфигурации для каждого проекта dll/reference.

Сборка собирает значения конфигурации из контекста приложения (Windows/Web), в котором они загружаются.

Итак, если у вас есть WebApp, сборки будут использовать файл Web.cfig WebApp для чтения значений конфигурации. Аналогично, если у вас есть приложение Windows App/ Unit Test, библиотеки должны читать значения из app.config.

Пожалуйста, прочитайте этот связанный вопрос - С#.NET. Компилирование файла settings.settings из различных проектов в решении в 1 файл конфигурации