2010-02-10 9 views
8

Vi que Jetty tiene una clase ServletTest que puede usar para probar Servlets.¿Cómo puedo probar los servlets con JUnit?

tester = new ServletTester(); 
tester.setContextPath("/"); 
tester.addServlet(TestServlet.class, "/servlet/*"); 
... 
tester.start(); 

¿Sabe si hay algo similar en Tomcat? ¿Cómo podría probar un servlet?

+0

Para las pruebas unitarias, no debería importar qué contenedor de servlets use. Esto es similar al uso de HSQL en lugar de Oracle para la prueba unitaria del código de acceso a la base de datos. Por lo tanto, incluso si escribe para un despliegue de Tomcat, si Jetty es más adecuado para pruebas unitarias (más rápido para comenzar, más fácil de configurar, etc.), puede ir con Jetty. – Thilo

Respuesta

6

Tome un vistazo a Jakarta Cactus

Cactus es un marco simple prueba para el código de prueba de la unidad del lado del servidor Java (Servlets, EJB, Tag Liberaciones, filtros, ...).

Here's a servlet test how-to

+3

FYI Jakarta Cactus ha estado en desuso desde 2011/08/05. :( – Piko

2

Nunca he encontrado un beneficio para probar servlets directamente (ni acciones de Struts, por ejemplo), especialmente dado el trabajo necesario para hacerlo.

La mayoría de mis servlets/acciones/lo que sea que use POJOs para la mayor parte de su trabajo, y los POJOs están fuertemente probados. Los webapps en sí tienen suites de pruebas HtmlUnit. Todo en el medio, supongo que es solo fontanería.

No creo que ni siquiera una vez haya encontrado algún tipo de error que SOLAMENTE hubiera sido detectado al probar las clases de servlet directamente, y que no fuera detectado por las pruebas POJO o de aplicación web.

+2

Punto tomado. Sin embargo, en mi caso, he heredado un servlet no deseado que es terriblemente complejo y con errores. Ser capaz de invocarlo desde una prueba unitaria para el escenario específico que está fallando acortará enormemente mi proceso de depuración. :) – Piko

Cuestiones relacionadas