Единичные тесты JSP

Я хотел бы спросить вас, какие существуют технологии для создания модульных тестов для JSP.

Я уже знаю возможности HtmlUnit/HttpUnit/JWebUnit/Selenium.

Спасибо!

Ответ 1

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

Сказав, что если бы я тестировал JSP, я бы, скорее всего, был удовлетворен системным тестом всех конкретных сценариев, связанных с JSP, используя некоторые из упомянутых выше инструментов.

Однако, если вы действительно хотите "классические" модульные тесты, я думаю, что самое близкое, что вы можете получить, это компиляция вашего JSP в класс сервлета, а затем вызов методов сервлета напрямую (например, JUnit, используя насмешливую структуру, такую ​​как EasyMock, чтобы подготовить объекты запроса Http, ответ и т.д.).

Обновление:. ИМО - единственная причина, по которой нужны единичные тесты для JSP, - если у вас есть бизнес-логика. Что, в свою очередь, противоречит разделению пользовательского интерфейса и бизнес-уровня. Поэтому лучше перепроектировать приложение и переместить логику в отдельную POJO (если у вас есть выбор), чем попытаться написать надуманные модульные тесты, чтобы протестировать бизнес-логику там, где она не принадлежит.