¿Cómo automatizar la creación, implementación y prueba de la aplicación web java?

votos
3

Por ahora tengo un proyecto web java que se construye automáticamente y se implementa en JBoss simplemente copiando el archivo ear al servidor dir (todos usando Ant).

Lo que necesito es un mecanismo para no solo implementar automáticamente la aplicación, sino también para verificar si la aplicación se implementó correctamente y ejecutar pruebas de HttpUnit en ella.

El problema es cómo monitorear automáticamente el proceso de implementación para esperar el momento en que la implementación finaliza y solo después de esa prueba de ejecución. Así que quiero construir, implementar, ejecutar pruebas en un clic (uso Cruise Control para eso).

Me agradecería cualquier sugerencia sobre la resolución del problema.

Publicado el 11/03/2009 a las 07:56
por usuario
En otros idiomas...                            


4 respuestas

votos
1

Cree una clase de prueba base de la que derivan todas las demás pruebas. Tiene que ser abstracto, por lo que el colector de prueba automático de la unidad no intenta ejecutarlo.

En esa clase, agregue este código a setUp ():

if (checkIsDeployed) {
    ... run code to verify your app is ready for testing and wait until it is ...
    checkIsDeployed = true;
}

checkIsDeployed debe ser estático.

Respondida el 11/03/2009 a las 08:26
fuente por usuario

votos
0

Podría considerar usar el motor de compilación de Hudson: https://hudson.dev.java.net/ para ayudarlo a activar eventos en momentos específicos.

Sé que hudson se puede usar para ejecutar pruebas unitarias y se puede lograr el despliegue automático llamando a hormiga.

Karl

Respondida el 11/03/2009 a las 08:29
fuente por usuario

votos
6

La necesidad aquí es iniciar un contenedor y desplegar una aplicación desde un script de compilación antes de ejecutar pruebas dependiendo de la aplicación desplegada. Esta es una necesidad típica de pruebas de integración, pruebas de extremo a extremo / funcionales, pruebas ui.

El problema es que no podemos simplemente "disparar y olvidar" el lanzamiento de un contenedor y ejecutar la tarea / objetivo de prueba. Necesitamos esperar a que la aplicación se implemente antes para ejecutar las pruebas y esto lleva algo de tiempo. Para estar seguro de que podemos ejecutar pruebas cuando las cosas estén listas, la compilación debe iniciar el contenedor e implementar la aplicación de forma bloqueante.

Esto es exactamente de lo que se trata Cargo . Cargo es una API de Java para iniciar / detener su contenedor y desplegar su aplicación. Proporciona la lógica descrita anteriormente y se puede utilizar desde Java, Ant o Maven.

Si está utilizando Maven, el ciclo de vida de compilación ya incluye algo para usted con la fase de "prueba de integración". Esta fase se usa típicamente para ... pruebas de integración y está envuelta por las fases "prueba previa a la integración" y "prueba posterior a la integración". Aquí es donde conectaría los objetivos de inicio / detención de la carga. Si está usando Ant, puede usar la tarea de hormiga de la carga.

Otra opción basada en el maven se describe en la Guía de configuración de Mavan Jetty Plugin . La idea es exactamente la misma que la anterior, excepto que utiliza el plugin jetty en lugar de la carga para comenzar el embarcadero durante la "prueba previa a la integración" y lo detiene durante la "prueba posterior a la integración".

Respondida el 12/03/2009 a las 08:37
fuente por usuario

votos
1

Otra opción es usar las Tareas de JBoss Server Ant .

Lo bueno de estas tareas es que bloquearán hasta que JBoss se inicie por completo, por lo que no se requiere votación. También fallarán si JBoss no puede comenzar en el tiempo de espera requerido e intentará apagar JBoss en el cierre de JVM si no puede debido a algún error. Creo que estas tareas se utilizan para la suite de pruebas JBoss.

También escuché cosas buenas sobre Cargo. El beneficio de esto es que sus scripts de compilación no son específicos de JBoss. Creo que el plugin de JBoss Cargo lo mantienen algunos tipos de JBoss, hasta donde yo sé.

Respondida el 14/04/2009 a las 18:22
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more