App.config в тестовых проектах - PullRequest
30 голосов
/ 15 апреля 2011

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

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

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

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

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

Спасибо!

Ответы [ 3 ]

53 голосов
/ 15 апреля 2011

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

Допустим, у вас есть ProjectA с оригинальным App.config . Тогда у вас есть ProjectATest1 и ProjectATest2 . В каждом из проектов TestX :

  1. щелкните правой кнопкой мыши имя решения в Visual Studio
  2. выберите «Добавить существующий элемент»
  3. перейдите к ProjectA App.config и выберите его
  4. нажмите на кнопку «Добавить» стрелка вниз
  5. выберите «Добавить как ссылку»

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

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

6 голосов
/ 15 апреля 2011

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

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

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

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

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

3 голосов
/ 15 апреля 2011

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...