2011-10-16 12 views
9

¿Hay una alternativa de Java para Ruby's VCR?¿Alternativa de Java para el vcr de Ruby?

Por lo que yo entiendo, los beneficios de usar una videograbadora son inmensos, puede ejecutar una "prueba de integración" y registrar los resultados, almacenarlos localmente. Ahora, a partir de la próxima vez que necesite ejecutar sus pruebas, puede simular las coincidencias reales de su base de datos con los datos grabados desde la primera ejecución.

  1. ¿Hay algo similar en el mundo de Java?
  2. Si no, ¿qué tipo de cuellos de botella puedo enfrentar si trato de implementarlo?

La videograbadora solo registra las interacciones HTTP, pero puede hacerlo para registrar, digamos cualquier tipo de operaciones de base de datos/llamadas a API de otros equipos que no necesito probar, básicamente esto me va a liberar de burlarse de tantas cosas al automatizarlo.

Here es un ejemplo de vídeo con pruebas unitarias de Ruby:

+0

Si desea realizar pruebas repetibles que escriben en una base de datos, consulte [dbunit] (http://www.dbunit.org/). –

Respuesta

9

Salida betamax. Es un puerto maravilloso de VCR. Debería funcionar en la JVM con cualquier idioma, creo.

En cuanto a usar una biblioteca similar a una VCR para grabar/reproducir interacciones DB: Sven Fuchs intentó este enfoque y didn't see much benefit to it.

+0

Gracias a la respuesta, en el caso de Sven Fuchs, el tiempo de inicio de la base de datos podría ser muy bajo, ya que estaba utilizando un proyecto de rieles regulares. Pero en mi caso, si trato de moverme por la base de datos (en java) obtendré una ganancia de 10 minutos de tiempo de iniciación. Creo que intentaré escribir un puerto de Java alguna vez y ver cómo funciona para mí. La grabación de interacción HTTP no es mi preocupación, lamentablemente. – zengr

+0

enlace betamax está muerto, enlace actualizado a github -> https://github.com/betamaxteam/betamax –

0

Echa un vistazo anystub. esto es java-lib permite grabar/reproducir cualquier invocación de String get(String... keys) en lugar de únicamente tráfico de HTTP.

Cuestiones relacionadas