2010-01-25 24 views
5

Tengo una herramienta web que cuando se consulta devuelve clases Java generadas en base a los argumentos en la URL.Generando pruebas unitarias automáticamente

Las clases que recuperamos del servidor web cambian a diario y debemos asegurarnos de que aún puedan procesar las entradas conocidas.

Tenga en cuenta que estas clases no prueban el servidor web, se ejecutan localmente y transforman xml en un formato personalizado. No estoy probando el servidor web.

Estas clases deben colocarse en una estructura de paquete específica compilada y ejecutada contra un conjunto conocido de datos de entrada y comparada con datos de salida conocidos.

Me gustaría hacer esto automáticamente cada noche para asegurarme de que las clases generadas sean correctas.

¿Cuál es la mejor manera de lograr esto?

En concreto cuál es la mejor manera:

  1. recuperar el código de un servidor web y lo coloca en un archivo
  2. compilar el código y luego lo llaman

Estoy seguro de una La mezcla de junit y hormiga será capaz de lograr esto, pero ¿existe una solución/enfoque estándar para esto?

+1

Se realizó una pregunta similar 18 minutos antes que la tuya: http://stackoverflow.com/questions/2131935/automatic-generation-of-unit-tests-for-java Es posible que también quieras rastrearla :) * Update * : ambos son de Londres ... ¿Colegas? : o – BalusC

+0

Dado que este proporciona muchos más detalles, ¿qué tal votamos para cerrar el otro como dup de este? –

+0

Hahaha no, no trabajamos juntos. Londres es un lugar bastante grande. Gracias por su ayuda –

Respuesta

2

En primer lugar, para responder a su pregunta: No, no creo que haya un estándar enfoque para esto. Esto suena como una situación bastante inusual ;-)

Dado que, lo que haría es escribir sus pruebas JUnit para llamar a una clase GeneratedCode, y luego, una vez que descargue el código, cambiar el nombre de la clase a GeneratedCode, compilar y ejecuta tus pruebas unitarias

0

Debe crear una interfaz "simulada" para su servicio web que (a) se comporta de la misma manera y (b) devuelve una respuesta conocida.

Luego debe hacer algunas otras pruebas de integración con el servicio web en vivo donde una persona mira los resultados y decide si funcionó.

+0

Hola, acabo de aclarar la pregunta, esto no es para probar el servicio web, simplemente obtengo clases de él. –

+0

Odio los simulacros. En general, es el doble de trabajo crear el servicio web, y terminas gastando todo tu tiempo de depuración tratando de averiguar si el error está en el servicio web o en el simulacro. –

+0

@Paul Tomblin: Correcto e incorrecto. Se supone que es más trabajo. Si tu simulacro requiere mucha depuración, entonces no entendiste lo suficiente como para burlarte. Si el servicio web está mal definido, entonces, eso es lo normal para el curso. La depuración del simulacro suele ser más simple que la depuración de la aplicación, por lo que se nivela a largo plazo. Más tiempo adelantado para construir el simulacro. Menos en curso para depurar. –

2

Usted tiene el mismo objetivo que la integración continua ;-)

Tal vez un poco exagerado para esta tarea simple, pero esta es la manera estándar para obtener algo, compilar y probar algo algo con regularidad.

E.g. puedes probar hudson.

+0

Para mí, la tarea es más automatización de compilación y luego integración continua. Hudson es un buen consejo, pero usaría maven (o horm) primero y usaría Hudson para ejecutar los scripts de compilación (al final disfrutaré de los excelentes informes basados ​​en web :)) –

+1

¿Qué significa "sth"? –

0

¿Puede probar únicamente las clases generadas después de que se publicaron en el servicio web? ¿No tienes manera de probar durante o justo después de la generación?

Una idea, si el código generado no es demasiado complejo, es cargarlo a través de GroovyClassLoader y ejecutar las pruebas en su contra. Vea this page para ejemplos.