Как реализовать модульные тесты в поддерживаемом базой данных приложении ASP.NET (также тестирование пользовательского интерфейса) - PullRequest
0 голосов
/ 01 июня 2011

Приложения ASP.NET, которые я разработал (на ASP.NET 2.0), обычно поддерживаются базой данных;Подавляющее большинство кода .NET на сервере загружает данные в виде DataSet или SqlDataReader и использует их для привязки данных к чему-то вроде DataGrid.Логическая логика зависит либо от базы данных, либо от интерфейса пользователя.

В этом контексте, как мне реализовать модульные тесты, которые будут выполняться сервером непрерывной интеграции (возможно, CruiseControl.NET)?Должен ли я установить тестовое соединение с базой данных, чтобы оно использовалось для тестирования операций CRUD и более сложных SPROC, или же в коде .NET должно содержаться больше логики, а не в SPROC?Это становится более сложным, когда в базе данных есть структура, которую приложение ожидает найти (например, таблица «Пользователи» в том, что я пишу для CMS).

Кроме того, каковы наилучшие способы сделать блоктестирование пользовательских интерфейсов?Я нашел NUnitASP , который сейчас заброшен, но упоминает Селен и Watir .

1 Ответ

1 голос
/ 01 июня 2011

Посмотрите на шаблон MVP (Model View Presenter).Это должно позволить вам изолировать поведение вашей системы и правильно протестировать его.

Также рассмотрите возможность перехода на MVC (я бы пошел с Fubu через ASP.NET MVC).Это позволит вам тестировать контроллеры и иметь более рельсовый опыт.

Для автоматизации я использую WatiN (как watir, но для .NET).Кроме того, я использую StoryTeller (Google «StoryTeller Джереми Миллер»), чтобы представить происходящее более понятным для человека способом и предоставить шаблоны для использования в QA.

Я очень рекомендую против любой бизнес-логики вsprocs.Держись от них подальше.Посмотрите на шаблон репозитория, чтобы абстрагироваться от получения и настройки данных.

Надеюсь, это поможет вам начать работу.

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