Тест сервлета
-
24-09-2019 - |
Вопрос
В настоящее время я использую Testng Framework для тестирования приложений Business Logic, я недавно добавил несколько классов сервлетов.
Как мне удалить тестирование этих классов сервлетов в Framework Testng?
Другие советы
Один из самых простых способов Сервентестер от пристани. Все делается внутри встроенного мощи автоматически, поэтому во время тестирования нет порта! Если вы используете Maven, чем следующий артефакт, чтобы включить этот метод:
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-servlet-tester</artifactId>
<version>6.1.16</version>
<scope>test</scope>
</dependency>
Пример:
Подготовьте сервентестер
ServletTester tester=new ServletTester();
tester.addServlet(HelloServlet.class, "/hello");
tester.start();
Создать HTTP-запрос
HttpTester request = new HttpTester();
request.setMethod("GET");
request.setHeader("Host","tester");
request.setURI("/hello");
request.setVersion("HTTP/1.0");
Позвоните в сервлете и получить ответ:
HttpTester response = new HttpTester();
response.parse(tester.getResponses(request.generate()));
Утвердить то, что вы хотите проверить на ответ, и это содержимое:
assertEquals(200,response.getStatus());
assertEquals("Hello Servlet",response.getContent());
Я предлагаю вам переместить всю бизнес-логику вне из классов сервлетов в ваши собственные классы, которые вы можете проверить. Это оставляет сервлеты так же, как клей между вашей бизнес-логикой и контейнером, ни на что не стоит тестирования.
Классы API, такие как HttpServletRequest
, ServletConfig
, и т. д., являются главными целями для использования издевающейся структуры вашего выбора (JMock, Mockito и т. Д.), Поскольку они все интерфейсы.