JerseyTest не распознает @WebFilter

Я пытаюсь создать JerseyTest на сервлете REST Джерси с помощью jersey-test-framework-provider-grizzly2.

Тест запрашивает правильный контент из сервлета в гризли.

Но при запуске продуктивного сервлета есть HTTPBasicAuth. Аутентификация выполняется с помощью @WebFilter("/*") org.apache.shiro.web.servlet.ShiroFilter.

Во время JerseyTest аутентификация не запрашивается. Итак, мой вывод: аннотация @WebFilter не распознается. Тестирует ли JerseyTest только ресурсы в приложении? Как распознать WebFilters?

Спасибо.


person Markus    schedule 10.10.2014    source источник


Ответы (1)


Думаю, я сам могу ответить ;-)

Это фреймворк JerseyTest, а не фреймворк FullAppWithJerseyTest.

Теперь я реализовал что-то вроде ServletJerseyTest, расширяющего JerseyTest. Он использует класс org.glassfish.jersey.test.external.ExternalTestContainerFactory.class, а setUp() содержит запуск контейнера сервлетов и установку последней встроенной WAR.

Тест выполняется для этого контейнера. В tearDown() контейнер останавливается, а установленный WAR удаляется.

Встроенный Tomcat имеет API для самостоятельного поиска свободного TCP-порта, а TestProperties.CONTAINER_PORT установлен на выбранный порт.

Теперь тесты идут как положено...

person Markus    schedule 11.10.2014
comment
Если вы знаете лучшее более общее решение без предположений о системе сборки, чтобы познакомиться с WAR, против которого следует протестировать... Ваши ответы будут приветствоваться! - person Markus; 11.10.2014