Модульное тестирование файла app.config с помощью NUnit - PullRequest
59 голосов
/ 04 октября 2008

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

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

Редактировать: Я думаю, что я должен уточнить, возможно. Меня не беспокоит, что ConfigurationManager не может прочитать значения, но я обеспокоен тестированием того, как моя программа реагирует на считанные значения.

Ответы [ 13 ]

0 голосов
/ 30 октября 2008

У меня была такая же проблема,

Вы можете использовать Nunit-console.exe c: \ path1 \ testdll1.dll c: \ path2 \ testdll2.dll

это работает нормально, даже если обе библиотеки указывают на разные app.configs ex testdll1.dll.config и testdll2.dll.config

если вы хотите использовать конфигурацию проекта Nunit и обернуть эти две библиотеки dll, вы не сможете получить две конфигурации

у вас должен быть файл project1.config, если ваш проект Nunit - это project1.nunit в том же месте, где находится Project1.nunit.

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

0 голосов
/ 04 октября 2008

Самый простой вариант - обернуть методы, которые читают конфигурацию, таким образом, что вы можете подставить значения во время тестирования. Создайте интерфейс, который вы используете для чтения конфигурации, и передайте реализацию этого интерфейса в качестве параметра конструктора или задайте для объекта как свойство (как вы бы использовали внедрение зависимостей / инверсию управления). В производственной среде передайте реализацию, которая действительно читает из конфигурации; в тестовой среде передайте тестовую реализацию, которая возвращает известное значение.

Если у вас нет возможности рефакторинга кода для тестируемости, но вам все еще нужно его протестировать, Typemock Isolator предоставляет возможность фактически высмеивать классы конфигурации платформы .NET, так что вы можете просто сказать «в следующий раз, когда я попрошу такое -и-значение appSettings, вернуть это известное значение. "

0 голосов
/ 04 октября 2008

На самом деле, если подумать об этом, я полагаю, что мне следует создать класс ConfigFileReader для использования в моем проекте, а затем подделать его в модульном тесте?

Это обычное дело?

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