У меня есть куча сервлетов, работающих под контейнером сервлетов Tomcat. Я хотел бы отделить тестовый код от производственного кода, поэтому я решил использовать тестовую структуру. JUnit хорошо интегрирован в Eclipse, но мне не удалось запустить сервлеты с помощью запущенного сервера Tomcat. Не могли бы вы рекомендовать платформу тестирования модулей, которая поддерживает тестирование сервлетов Tomcat? Интеграция Eclipse хороша, но не нужна.Сервлеты для тестирования модулей
ответ
Отъезд ServletUnit, который является частью HttpUnit. В двух словах ServletUnit предоставляет библиотеку mocks и утилит, которые вы можете использовать в обычных тестах JUnit для извлечения контейнера сервлета и других объектов, связанных с сервлетом, таких как объекты запроса и ответа. В приведенной выше ссылке содержатся примеры.
Проект HttpUnit, похоже, не работал с 2008-05 года. Возможно, он мертв? – Raedwald 2013-06-10 12:12:04
Хорошо. Игнорируя бит «tomcat» и кодируя сервлет, лучше всего создать макеты для объектов ответа и запроса, а затем рассказать ему, что вы ожидаете от него.
Так что для стандартной пустой doPost, и с помощью EasyMock, вы будете иметь
public void testPost() {
mockRequest = createMock(HttpServletRequest.class);
mockResponse = createMock(HttpServletResponse.class);
replay(mockRequest, mockResponse);
myServlet.doPost(mockRequest, mockResponse);
verify(mockRequest, mockResponse);
}
Затем начните добавлять код в doPost. Москиты потерпят неудачу, потому что у них нет ожиданий, и тогда вы можете установить ожидания оттуда.
Обратите внимание, что если вы хотите использовать EasyMock с классами, вам придется использовать библиотеку расширений класса EasyMock. Но с тех пор это будет работать так же.
Для тестирования «в-контейнера», посмотреть на Cactus
Если вы хотите, чтобы быть в состоянии проверить без запущенного контейнера вы можете моделировать его компоненту с собственным mockobjects (например, с EasyMock) или мог попробовать MockRunner, который имеет «предварительно определенные» шлейфы для тестирования сервлетов, jdbc-соединений и т. д.
«2011/08/05 - Кактус Джакарты был уволен». – Raedwald 2013-06-10 12:12:54
Spring Framework, имеет хорошие готовые макеты объектов для нескольких классов выхода из Servlet API:
Отдельные части этого кода, которые имеют дело с HTTP-запросов и ответа из частей, которые делают бизнес логики или базы данных. В большинстве случаев это создаст трехуровневую архитектуру с уровнем данных (для базы данных/персистентности), уровня обслуживания (для бизнес-логики) и уровня представления (для HTTP-запросов и ответов).
- Вы можете выполнить тестирование первых двух слоев без каких-либо материалов сервлетов; это будет легче протестировать таким образом.
- Вы можете протестировать уровень представления, as others suggest, используя макет объектов HTTP-запроса и ответа.
- И, наконец, если вы считаете, что это действительно необходимо, вы можете выполнить интеграционные тесты, используя HtmlUnit или JWebUnit.
Обновлено Feb 2018: OpenBrace Limited has closed down, а его продукт ObMimic больше не поддерживается.
Если вам нужна более новая альтернатива ServletUnit для тестирования сервлетов JUnit, вы можете найти полезную библиотеку моей компании ObMimic. Он доступен бесплатно с сайта downloads.
Как и в ServletUnit, он предоставляет библиотеку классов, которые можно использовать в обычных тестах JUnit или TestNG вне любого контейнера сервлета для имитации API-интерфейса Servlet.
Объекты API Servlet имеют конструкторы без аргументов, полностью настраиваются и проверяются для всех соответствующих данных и настроек Servlet API и обеспечивают полное моделирование всего поведения, указанного в javadoc API сервлета. Чтобы помочь в тестировании, есть поддержка выборочной записи вызовов Servlet API, управления любым зависящим от контейнера поведением, проверяет любые неоднозначные вызовы (т. Е. Когда поведение API Servlet не полностью определено) и синтаксическое моделирование JNDI в памяти для любых сервлет-код, основанный на поиске JNDI.
Для получения более подробной информации, пример кода, руководства «как», Javadoc и т. Д. См. На веб-сайте.
- 1. Линии для тестирования модулей?
- 2. Аннотации для тестирования модулей?
- 3. Импорт модулей для тестирования
- 4. Новое для тестирования модулей
- 5. уровни тестирования тестирования модулей
- 6. Методы тестирования модулей тестирования
- 7. Примеры тестирования модулей для инструментов тестирования VS2010
- 8. Компилятор для тестирования модулей Symfony2
- 9. классы испытаний для тестирования модулей
- 10. Базы данных для тестирования модулей
- 11. Ресурсы для тестирования модулей C#
- 12. Mocking Googleads для тестирования модулей
- 13. Codeigniter Модули для тестирования модулей
- 14. Устройство «Эхо» для тестирования модулей
- 15. Любой инструмент для тестирования модулей?
- 16. Общее расписание тестирования модулей
- 17. Условия тестирования модулей
- 18. Вопросы тестирования модулей CocoaPods
- 19. Дилемма тестирования модулей
- 20. Какая схема тестирования модулей?
- 21. TestNG для тестирования модулей на Android для тестирования асинхронных методов
- 22. Узел тестирования модулей: OleDbCommand
- 23. Ограничения валидатора модулей тестирования
- 24. Лучшая практика тестирования модулей
- 25. Асинхронная функция тестирования модулей
- 26. Android - Локализация модулей тестирования
- 27. Структура каталогов модулей тестирования
- 28. Структура тестирования модулей WPF
- 29. Необходимый код для тестирования модулей тестирования, который не тестируется
- 30. Каков наилучший подход для тестирования модулей/тестирования интеграции GXT-кода?
Я использую jUnit для запуска контейнера сервлетов Jetty. До и после выключения после. – LeeGee 2014-01-21 16:45:48