Писать Юнит для сервлета? - PullRequest
       10

Писать Юнит для сервлета?

0 голосов
/ 01 октября 2011

Я использую сервер приложений Glassfish. Мне нужно написать юниты для какого-нибудь сервлета. Мой вопрос здесь заключается в том, как я могу создать симулированный контейнер, макет запроса и ответа с основными библиотеками Java или мне нужно использовать какой-то инструмент здесь? Любые указатели были бы полезны?

Ответы [ 3 ]

4 голосов
/ 01 октября 2011

Как отмечает hvgotcodes, вполне возможно написать тесты JUnit для сервлетов. Но я бы посоветовал вам тщательно подумать, прежде чем сделать это.

Сервлеты являются прослушивателями HTTP-запросов; они запускаются в контейнере сервлетов, отвечают на любые возникающие HTTP-запросы и упаковывают результаты для отправки обратно. Это все, что они должны делать, по моему мнению. Настоящую работу лучше оставить другим объектам, которые сервлет может собрать. Это могут быть POJO, скорее всего, на основе интерфейса, что будет означать более простое тестирование без необходимости запуска контейнера сервлета для запуска теста. Если вы решите, что вам нужны те же функции в настройках, не связанных с сетью, это легко сделать, поскольку они уже находятся в объектах, отличных от сервлета.

Я бы пересмотрел дизайн. Использование большого количества функций в сервлете может быть плохим решением.

3 голосов
/ 01 октября 2011

1) Неплохая идея абстрагировать логику вашего приложения в объекты, вызываемые сервлетом, чтобы вы могли тестировать свою бизнес-логику отдельно от взаимодействий сервлета.

2) Spring предоставляет несколько фиктивных классов для тестов , включая запросы и ответы. Даже если вы не используете Spring, вы все равно можете использовать эти классы только для тестов.

0 голосов
/ 01 октября 2011

Вы можете найти Аркуиллиана из JBoss интересным - http://community.jboss.org/wiki/Arquillian.

Тест в контейнере!

Arquillian предоставляет простой механизм для проверки кода вашего приложения внутри удаленного или встроенного контейнера или путем взаимодействия в качестве клиента контейнера.

Миссия

Миссия проекта Arquillian - предоставить простой набор тестов, который разработчики могут использовать для создания широкого спектра интеграционных тестов для своих Java-приложений (наиболее вероятно, корпоративных приложений). Тестовый пример может выполняться внутри контейнера, развертываться вместе с тестируемым кодом или координироваться с контейнером, действуя как клиент для развернутого кода.

...