Как выполнить модульное тестирование отсутствующего раздела конфигурации .NET - PullRequest
1 голос
/ 25 ноября 2008

Если у меня есть такой код:

        public XALServiceConfiguration CreateInstance()
        {
            var config = ConfigurationManager.GetSection(ConfigurationSectionName) as XALServiceConfiguration;
            if (config == null)
                throw new ConfigurationErrorsException("Configuration element 'xalService' was not found or is not of correct type.");
            return config;
        }

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

Я использую среду модульного тестирования Visual Studio 2008.

Ответы [ 5 ]

2 голосов
/ 25 ноября 2008

Вы можете запустить тестовый сценарий в отдельном домене приложения. Для этого вы можете указать файл конфигурации для использования или даже указать файл конфигурации как «байты» (см. Структура AppDomainSetup )

2 голосов
/ 25 ноября 2008

Я думаю, что другие ответы до сих пор упустили смысл вашего вопроса, а именно, как спровоцировать исключение.

Используя статическую технику, подобную этой, вы действительно не можете легко это сделать - вам нужно было бы внедрить определенную конфигурацию в ваш тест. Кажется, я помню, что управление конфигурацией .NET не особенно поддается этому, но я думаю, что можно сделать. У меня сейчас нет легкого доступа к MSDN, но я пытаюсь найти способ загрузки экземпляра конфигурации вместо доступа к нему только статическими методами. Я могу ошибаться - возможно, нет способа сделать это.

Не беспокойтесь о 100% покрытии - к сожалению, иногда есть просто условия, которые невозможно протестировать: (

1 голос
/ 25 ноября 2008

Просто, чтобы сделать ответ Слейса более понятным, он будет выглядеть так:

try {
  XALServiceConfiguration config = CreateInstance();
} catch (ConfigurationErrorsException cee) {
  Assert.Fail("Could not create XALServiceConfiguration: " + e.Message);
}

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

0 голосов
/ 22 марта 2013

Это хорошая реализация для тестирования разделов конфигурации. http://www.codeproject.com/Articles/71843/Unit-Testing-your-App-config-and-ConfigurationSect

0 голосов
/ 25 ноября 2008

Вы можете просто поймать исключение в try catch описании и сделать Assert в улове.

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