2010-06-21 2 views
0

Я - новый веб-разработчик и задаю следующие вопросы:Тестирование проекта веб-сайта с NUnit

У меня есть проект веб-сайта. У меня есть один класс datacontext в папке App_Code, который содержит методы работы с базой данных (там также присутствует схема dbml) и методы, которые напрямую не влияют на db. Я хочу протестировать оба метода с помощью NUnit.

Поскольку Nunit работает с классами в .dll или .exe, я понял, что мне нужно будет либо преобразовать весь проект в веб-приложение, либо перенести весь код, который я бы хотел протестировать (то есть: все содержимое App_Code) в проект библиотеки классов и ссылку на проект библиотеки классов в проекте веб-сайта.

Если я решил переместить методы для разделения DLL, вопрос в том, как я могу проверить те методы, которые работают с базой данных? :

  • Будет ли я должен создать соединение с дб в методе «настройки» перед запуском каждый из этих методов? Правильно ли, что в этом случае нет необходимости запускать веб-приложение?

  • Или мне нужно запустить такие тесты во время времени выполнения веб-сайта при установлении соединения ? В этом случае, как настроить проект и Nunit?

  • или какой-либо другой способ ..

Во-вторых, если метод зависит от некоторой настройки в моем файле .config, например, некоторые сетевые учетные данные или настройки SMTP, что подход, чтобы проверить такие методы ?

Буду признателен за любую помощь! Чем конкретнее, тем лучше. Спасибо.

ответ

1

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

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

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

+0

Thx для пояснений! Поскольку мне нужно точно модульное тестирование, я продолжу расследование правильного использования NUnit с веб-сайтом – qwebek

Смежные вопросы