Как проверить, что все мои ожидаемые настройки web.config были определены? - PullRequest
1 голос
/ 13 октября 2009

Я использую встроенную тестовую среду в VS2008, и я хотел бы написать тест, который удостоверится, что все ожидаемые настройки web.config были определены, чтобы при случайном удалении или изменении моего набора тестов обнаружит это и не должно быть проверено в сценарии выполнения. Как бы я это настроил?

Я не хочу устанавливать макет моего web.config, поскольку я не хочу поддерживать две версии, и это в любом случае сделает мой тест недействительным, поскольку я действительно пытаюсь уловить тот факт, что проект web.config правильный.

Любые предложения, альтернативы, советы?

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

Я попытался разделить файлы конфигурации, как и было предложено, но проблема, с которой я столкнулся, заключалась в том, что когда запускался тестовый проект, он фактически не заканчивался из каталога bin (что устанавливало для файлов конфигурации тип «Content») будет копировать в), но вместо этого в каталог результатов, который был предварительно определен. Я не мог понять, как заставить его скопировать эти дополнительные файлы в этот каталог результатов, чтобы файлы конфигурации никогда не могли быть найдены.

Ответы [ 3 ]

2 голосов
/ 13 октября 2009

Чтобы расширить ответ bniwredyc , возможно, рассмотрим:

  • рефакторинг вашего web.config для ссылки на новый файл конфигурации, например appSettings.config или аналогичный.

  • изменить web.config вашего проекта на:

    <appSettings configSource="appSettings.config" />

  • измените файл app.config вашего модульного теста, чтобы использовать и этот файл.

  • измените ваш пост или события перед сборкой, чтобы скопировать только этот файл.

  • это также помогает упростить развертывание в Test / Staging / Prod

2 голосов
/ 13 октября 2009

Я использую событие предварительной сборки для копирования рабочего web.config в каталог вашего тестового проекта.

Установите в командной строке события перед сборкой тестового проекта следующую строку:

copy $(SolutionDir)\YourWebAppDir\web.config $(ProjectDir) /y

После этого ваши тесты всегда будут работать с актуальной версией web.config.

Комментарий к ответу pcampbell :

Я думаю, что если вы используете атрибут configSource, вы можете просто установить его по одному и тому же пути в web.config вашего веб-приложения и app.config тестового проекта, и в этом нет необходимости использовать события сборки.

извините, я пока не могу оставлять комментарии.

0 голосов
/ 14 октября 2009

В конечном счете, web.config - это файл XML. Вы можете создать схему для проверки наличия необходимых разделов и заполнения необходимых значений. Очевидно, что вы не можете контекстно проверить любую бизнес-логику, которая может содержаться в конфигурации, но вы можете использовать комбинацию проверки XSD плюс легкий класс, который используется для анализа условий в файле.

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

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