Тестирование проекта веб-сайта с помощью NUnit - PullRequest
0 голосов
/ 21 июня 2010

Я новичок в веб-разработке и у меня есть следующие вопросы

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

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

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

  • Должен ли я создать соединение с БД в методе "setup" перед запуском каждого из этих методов?Это правильно, что в этом случае нет необходимости запускать веб-приложение?

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

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

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

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

1 Ответ

0 голосов
/ 21 июня 2010

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

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

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

...