Модульное тестирование приложений ASP.NET MVC3 (с NHibernate) - PullRequest
1 голос
/ 30 апреля 2011

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

Так что у меня все в порядке с вспомогательными классами;но как мне тестировать классы моделей (учитывая, что они аннотированы для NHibernate и привязаны к базе данных), и как я могу тестировать мои представления и контроллеры?

Какие конкретные инструменты и методы янужно тестировать привязанные к NHibernate модели, а также представления и контроллеры ASP.NET? Я не уверен.NUnit решает только некоторые проблемы.

Редактировать: Вот несколько примеров кода - я сейчас не на своем компьютере разработчика, поэтому у меня нет реального кода для показа-case.

  • Модели: Что-нибудь из Документация ActiveRecord
  • Контроллеры: Стандартный HomeController от Документация MVC3
  • Представления: Любое строго типизированное представление (скажем, Create), сгенерированное из контекстного меню, вызываемого правой кнопкой мыши (Add> View)

Конкретные вопросы:

  • Как я могу протестировать сохранение моделей без фактического сохранения в основной / производственной базе данных
  • Область для тестирования представлений;я должен просто проверить поля существуют?А как насчет сообщений об ошибках валидации?
  • Контроллеры: область для тестирования.Должен ли я проверить, что действия касаются и деформируют данные базы данных, как ожидается (например, / get / id получает этот объект; / delete / id удаляет этот объект)?

1 Ответ

1 голос
/ 30 апреля 2011

Вы можете попасть туда с помощью различных видов тестов, но вам нужно применять их с умом в зависимости от того, что вы собираетесь тестировать:

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

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

  • Вы можете использовать UI Testing с использованием таких фреймворков, как Selenium , но делать это только там, где это действительно необходимо, потому что это не так просто, как два предыдущих типа тестов, и его трудно поддерживать и хрупко.

Рекомендуется поддерживать тонкий внешний вид (UI) и тестировать другие слои за UI, так как тестирование UI, вероятно, не стоит всех хлопот.

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