Как вы пишете модульные тесты для своих Java-сервлетов? - PullRequest
6 голосов
/ 04 декабря 2009

Каковы лучшие практики для модульного тестирования Java-сервлетов? Кстати: это тема, в которой у меня есть некоторые сложности: как вы тестируете свои Java-сервлеты?

Ответы [ 3 ]

17 голосов
/ 04 декабря 2009

Самое важное, что нужно сделать, это попытаться извлечь из сервлетов все, что не имеет прямого отношения к поведению сервлета .

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

Большинство ваших тестов (в зависимости от структуры и сложности вашей системы) можно протестировать в обычном режиме. Дополнительные тесты, ориентированные на сервлеты, могут быть построены с использованием, скажем, Apache Cactus для проверки работоспособности. Помимо этого вы можете захотеть исследовать решения в браузере, такие как Selenium .

(Примечание: этот подход работает для большинства сред с графическим интерфейсом, например, Swing)

2 голосов
/ 04 декабря 2009

Что мы обычно делаем, это загружаем сервлет с ложным запросом и ответом. Если вы используете Spring, это особенно просто, так как на самом деле он предоставляет MockHttpRequest и MockHttpResponse.

Если у вас есть четко определенные слои в вашем приложении, все остальное легко. Базовый уровень службы / DAO можно заменить на mocks, поэтому мы просто должны убедиться, что сервлет делает то, что должен делать для данного объекта запроса, и правильно записать ответ.

2 голосов
/ 04 декабря 2009

Почти тот же вопрос был задан только сегодня здесь .

Джакартский кактус - это инфраструктура модульного тестирования для сервлетов.

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