2009-12-04 1 views
6

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

+0

См. Также этот дубликат: http://stackoverflow.com/questions/53532/unit-testing-servlets –

ответ

17

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

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

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

(Примечание: Этот подход работает для большинства GUI сред - например, Swing)

+0

«2011/08/05 - Кактус Джакарты был уволен». – Raedwald

2

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

Jakarta cactus - это единый модуль тестирования сервлетов.

+0

Приятно знать этот проект кактуса Джакарты. Но я также хотел бы узнать, какие лучшие практики. Спасибо за подсказку! –

+0

«2011/08/05 - Кактус Джакарты был уволен». – Raedwald

2

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

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

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