prueba de la unidad servlet
-
24-09-2019 - |
Pregunta
Actualmente estoy usando marco TestNG para probar la lógica empresarial de la aplicación, he añadido algunas clases de servlet recientemente.
¿Cómo se prueba la unidad de estas clases de servlet en el marco TestNG?
Otros consejos
Una de las maneras más fáciles es ServletTester del embarcadero. Todo se hace dentro de embarcadero incrustado de forma automática, por lo que no hay un puerto abierto durante la prueba! Si utiliza Maven que el siguiente artefacto necesaria para que este método:
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-servlet-tester</artifactId>
<version>6.1.16</version>
<scope>test</scope>
</dependency>
Ejemplo:
Preparar ServletTester
ServletTester tester=new ServletTester();
tester.addServlet(HelloServlet.class, "/hello");
tester.start();
Crea petición HTTP
HttpTester request = new HttpTester();
request.setMethod("GET");
request.setHeader("Host","tester");
request.setURI("/hello");
request.setVersion("HTTP/1.0");
servlet llamada y recuperar la respuesta:
HttpTester response = new HttpTester();
response.parse(tester.getResponses(request.generate()));
Afirmar lo desea comprobar la respuesta y su contenido:
assertEquals(200,response.getStatus());
assertEquals("Hello Servlet",response.getContent());
Sugiero que se mueve toda la lógica de negocio a cabo de las clases de servlets, en sus propias clases que se pueden probar. Eso deja a los servlets simplemente como nexo de unión entre la lógica de negocio y el contenedor, sin nada en ellos vale la pena probar.
Las clases de la API como HttpServletRequest
, ServletConfig
, etc, son los principales objetivos para el uso de un marco de burla de su elección (JMock, Mockito, etc), ya que son todas las interfaces.