Tengo un montón de servlets ejecutándose bajo el contenedor de servlets de Tomcat. Me gustaría separar el código de prueba del código de producción, así que consideré usar un marco de prueba. JUnit está muy bien integrado en Eclipse, pero no pude ejecutar servlets utilizando un servidor Tomcat en ejecución. ¿Podría recomendar un marco de prueba de unidades que admita la prueba de servlets de Tomcat? La integración de Eclipse es agradable pero no necesaria.servlets de prueba de unidades
Respuesta
Consulte ServletUnit, que es parte de HttpUnit. En pocas palabras, ServletUnit proporciona una biblioteca de simulacros y utilidades que puede usar en las pruebas ordinarias de JUnit para simular un contenedor de servlets y otros objetos relacionados con servlets, como los objetos de solicitud y respuesta. El enlace de arriba contiene ejemplos.
El proyecto HttpUnit parece no tener actividad desde 2008-05. Tal vez está muerto? – Raedwald
Bien. Ignorando el bit 'tomcat' y la codificación del servlet, la mejor opción es crear simulaciones para la respuesta y solicitar objetos, y luego contarle lo que espera de él.
Así que para una doPost vacío estándar y utilizando EasyMock, tendrá
public void testPost() {
mockRequest = createMock(HttpServletRequest.class);
mockResponse = createMock(HttpServletResponse.class);
replay(mockRequest, mockResponse);
myServlet.doPost(mockRequest, mockResponse);
verify(mockRequest, mockResponse);
}
A continuación, empezar a añadir código al doPost. Los simulacros fallarán porque no tienen expectativas, y luego puedes establecer las expectativas desde allí.
Tenga en cuenta que si desea utilizar EasyMock con clases, deberá usar la biblioteca de extensiones de clases EasyMock. Pero funcionará de la misma manera a partir de ese momento.
Para las pruebas "in-contenedor", echar un vistazo a Cactus
Si usted quiere ser capaz de probar sin un recipiente funcionando usted puede simular sus componentes con sus propios mockobjects (por ejemplo, con EasyMock) o podría intentar MockRunner que tiene stubs "predefinidos" para probar servlets, jdbc-connections etc.
"08/08/2011 - Jakarta Cactus ha sido retirado". – Raedwald
El Spring Framework tiene buenas listos objetos hechos simuladas para varias clases fuera de la API de Servlet:
separar las partes de que el código que se ocupan de las peticiones HTTP y la respuesta de las partes que hacen negocios la lógica o la manipulación de la base de datos. En la mayoría de los casos, esto producirá una arquitectura de tres niveles, con una capa de datos (para la base de datos/persistencia), capa de servicio (para la lógica de negocios) y una capa de presentación (para las solicitudes y respuestas HTTP).
- Puede probar las dos primeras capas sin ningún tipo de servlet; será más fácil probarlo de esa manera.
- Puede probar la capa de presentación, as others suggest, utilizando objetos simulados de solicitud y respuesta HTTP.
- Por último, si cree que es realmente necesario, puede realizar pruebas de integración usando también como HtmlUnit o JWebUnit.
Actualizado en febrero de 2018: OpenBrace Limited has closed down, y su producto ObMimic ya no es compatible.
Si desea una alternativa más nueva a ServletUnit para la prueba JUnit de Servlets, puede encontrar que la biblioteca ObMimic de mi empresa es útil. Está disponible de forma gratuita desde la página web downloads.
Al igual que con ServletUnit, proporciona una biblioteca de clases que puede usar en pruebas JUnit o TestNG normales fuera de cualquier contenedor de servlets para simular la API de Servlet.
Sus objetos Servlet API tienen constructores sin argumentos, son totalmente configurables e inspeccionables para todos los ajustes y datos relevantes de la API Servlet, y proporcionan una simulación completa de todo el comportamiento especificado por el javadoc de la API de Servlet. Para ayudar con las pruebas hay soporte para la grabación selectiva de las llamadas a la API Servlet, control sobre cualquier comportamiento dependiente del contenedor, verifica cualquier llamada ambigua (es decir, donde el comportamiento de la API Servlet no está completamente definido) y una simulación JNDI en memoria para cualquier código de servlet que se basa en búsquedas JNDI.
Para obtener detalles completos, ejemplos de código, guías de "cómo hacerlo", Javadoc, etc., visite el sitio web.
- 1. Prueba de unidades multiproceso
- 2. Marco de prueba de unidades de WPF
- 3. Prueba de unidades de un componente Swing
- 4. Marco de prueba de unidades .NET favorito
- 5. Doctrina de prueba de unidades ODM
- 6. C# Recursos de prueba de unidades
- 7. Prueba de consola y rastrillo Rails: unidades
- 8. Modelo de prueba de unidades Clases que heredan de NSManagedObject
- 9. E/S de archivos de prueba de unidades
- 10. Código de ejemplo de prueba de unidades automáticamente
- 11. Marco de aislamiento de prueba de unidades preferidas para .net
- 12. Uso de marcos de prueba de unidades existentes con SystemC
- 13. Análisis en C++ para generar resúmenes de prueba de unidades
- 14. Prueba de unidades de construcción para Controladores asíncronos MVC2
- 15. Servlets asincrónicos vs servlets síncronos
- 16. ¿Visual Studio 2010 solo ejecutará 4.0 unidades de prueba?
- 17. ¿Proyectos de prueba unitarios o múltiples unidades por solución?
- 18. Prueba de unidades PHP con Zend Auth y Zend ACL
- 19. Reemplazar unidades de función
- 20. Descripción del contenedor de servlets
- 21. Contenedores de servlets y classpath
- 22. Ruta de prueba de los archivos de datos para pruebas de unidades
- 23. Operaciones de archivos de prueba de unidades: ¿dónde mantener la estructura de directorios simulada?
- 24. Java: estrategias de prueba de unidades de colas de simultaneidad/bloqueo
- 25. Java Servlets subprocesamiento modelo
- 26. Servlets vs MVC frameworks
- 27. Embarcadero: servlets vs handlers
- 28. comunicación entre servlets remotos
- 29. Contenedor de servlets de Java para desarrollo
- 30. Autenticación de formulario estándar Servlets de Java
Utilizo jUnit para abrir un contenedor de servlet Jetty antes y lo apago si lo hago después. – LeeGee