Вопрос

В настоящее время я использую Testng Framework для тестирования приложений Business Logic, я недавно добавил несколько классов сервлетов.

Как мне удалить тестирование этих классов сервлетов в Framework Testng?

Это было полезно?

Решение

Следуйте совету Skaffman, если это возможно. Если нет, или если вы хотите проверить поведение сервлетов в качестве интерфейсных контроллеров, а не бизнес-логику внутри них, вы можете использовать:

Другие советы

Один из самых простых способов Сервентестер от пристани. Все делается внутри встроенного мощи автоматически, поэтому во время тестирования нет порта! Если вы используете 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 и т. Д.), Поскольку они все интерфейсы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top