Я занимаюсь модульным тестированием приложения .NET (.exe), которое использует файл app.config для загрузки свойств конфигурации. Само приложение модульного тестирования не имеет файла app.config.
Когда я пытаюсь выполнить модульное тестирование метода, который использует любое из свойств конфигурации, они возвращают ноль . Я предполагаю, что это потому, что приложение модульного теста не загружается в app.config целевого приложения.
Есть ли способ переопределить это или мне нужно написать сценарий для копирования содержимого целевого app.config в локальный app.config?
Этот пост вроде задает этот вопрос, но автор действительно смотрит на него с другой стороны, чем я.
РЕДАКТИРОВАТЬ: я должен упомянуть, что я использую VS08 Team System для моих модульных тестов.
источник
В Visual Studio 2008 я добавил
app.config
файл в тестовый проект как существующий элемент и выбрал копию в качестве ссылки, чтобы убедиться, что он не дублируется. Таким образом, у меня есть только одна копия в моем решении. С несколькими тестовыми проектами это очень удобно!источник
Используете ли вы Team System Test или NUnit , рекомендуется создать отдельную библиотеку классов для ваших тестов. Простое добавление App.config в ваш тестовый проект автоматически будет скопировано в папку bin при компиляции .
Если ваш код зависит от конкретных тестов конфигурации, самый первый тест, который я напишу, подтверждает, что файл конфигурации доступен ( так что я знаю, что я не сумасшедший ):
И тест:
В идеале вы должны писать код так, чтобы ваши объекты конфигурации передавались в ваши классы. Это не только отделяет вас от проблемы файла конфигурации, но также позволяет вам писать тесты для различных сценариев конфигурации.
источник
Если у вас есть решение, которое содержит, например, веб-приложение и тестовый проект, вы, вероятно, хотите, чтобы тестовый проект использовал веб-приложение web.config.
Один из способов решить эту проблему - скопировать файл web.config для тестирования проекта и переименовать его в app.config.
Другое и лучшее решение - изменить цепочку сборки и сделать ее автоматической копией файла web.config для проверки выходного каталога проектов. Для этого щелкните правой кнопкой мыши Test Application и выберите свойства. Теперь вы должны увидеть свойства проекта. Нажмите «Build Events», а затем нажмите «Edit Post-build ...». Напишите туда следующую строку:
И нажмите ОК. (Обратите внимание, что вам, скорее всего, нужно изменить WebApplication1 в качестве имени проекта, которое вы хотите протестировать). Если у вас неправильный путь к web.config, то копирование завершится неудачно, и вы заметите это во время неудачной сборки.
Редактировать:
Чтобы скопировать из текущего проекта в тестовый проект:
источник
.config
файлов. Спасибо, что поделился! :)web.config
имеют ссылки только на внешние.config
файлы в рамках одного проекта. Поскольку путь может указывать только на папки в одном и том же каталоге (что обычно верно), при запуске тестов он не сможет обрабатывать эти внешние файлы. Есть идеи как это решить?Это немного устарело, но я нашел лучшее решение для этого. Я пытался выбрать ответ здесь, но похоже, что .testrunconfig уже устарел.
1. Для модульных тестов Wrap the config is Interface (IConfig)
для модульных тестов конфигурация действительно не должна быть частью того, что вы тестируете, поэтому создайте макет, который вы можете внедрить. В этом примере я использовал Moq.
2. Для тестирования интеграции динамически добавьте нужный вам конфиг
источник
Это очень просто.
источник
Если вы используете NUnit, взгляните на этот пост . По сути, вам нужно, чтобы ваш app.config находился в том же каталоге, что и файл .nunit.
источник
Если ваше приложение использует такие настройки, как Asp.net ConnectionString, вам необходимо добавить атрибут HostType в ваш метод, иначе они не будут загружаться, даже если у вас есть файл App.Config.
источник
Я использую NUnit, и в моем каталоге проектов у меня есть копия моего App.Config, в которой я изменяю некоторую конфигурацию (например, я перенаправляю в тестовую базу данных ...). Вы должны иметь его в том же каталоге тестируемого проекта, и все будет в порядке.
источник
Я не смог заставить ни одно из этих предложений работать с nUnit 2.5.10, поэтому в итоге я использовал функциональность Project -> Edit для nUnit, чтобы указать целевой файл конфигурации (как говорили другие, он должен находиться в той же папке, что и. сам файл nunit). Положительной стороной этого является то, что я могу дать конфигурационному файлу имя Test.config, которое сделает его более понятным, что это такое и почему это так)
источник
Ваши модульные тесты рассматриваются как среда, в которой выполняется ваш код для его тестирования. Как и в любой нормальной среде, у вас есть, например, постановка / производство. Возможно, вам также понадобится добавить
.config
файл для вашего тестового проекта. Обходной путь - создать библиотеку классов и преобразовать ее в тестовый проект, добавив необходимые пакеты NuGet, такие как NUnit и NUnit Adapter. он отлично работает как с Visual Studio Test Runner, так и с Resharper, и у вас естьapp.config
файл в тестовом проекте.И наконец отладил мой тест и значение из
App.config
:источник