2011-10-16 19 views
9

Esiste un'alternativa java per Ruby's VCR?Alternativa Java per vcr Ruby?

Per quanto ho capito, i vantaggi dell'utilizzo del videoregistratore sono immensi, è possibile eseguire un "test di integrazione" e registrare i risultati, archiviarli un po 'dove localmente. Ora dalla prossima volta in cui è necessario eseguire i test, è possibile simulare i risultati effettivi del database con i dati registrati dalla prima esecuzione.

  1. C'è qualcosa di simile nel mondo Java?
  2. In caso negativo, che tipo di colli di bottiglia potrei dover affrontare se cerco di implementarlo?

videoregistratore registra solo interazioni HTTP, ma può un tale approccio può fare per registrare, dicono ogni tipo di operazioni di banca dati/chiamate di funzione per altre API di squadra, che non ho bisogno di testare, in fondo questo mi permette di sgravare da prendendo in giro così tante cose automatizzandolo.

Here è un esempio di videoregistratore con test di unità di Ruby:

+0

Se si desidera eseguire test ripetibili su un database, consultare [dbunit] (http://www.dbunit.org/). –

risposta

9

Partenza betamax. È un portentoso videoregistratore. Dovrebbe funzionare sulla JVM con qualsiasi linguaggio, credo.

Per quanto riguarda l'utilizzo di una libreria simile a un videoregistratore per registrare/riprodurre le interazioni DB: Sven Fuchs ha provato questo approccio e didn't see much benefit to it.

+0

Grazie alla risposta, nel caso di Sven Fuchs, il tempo di inizializzazione del database potrebbe essere molto basso poiché stava utilizzando un progetto di rotaie regolari. Ma nel mio caso, se cerco di aggirare il database (in java) otterrò un guadagno di 10 minuti di tempo di init! Penso che cercherò di scrivere una porta Java a volte e vedere come funziona per me. La registrazione dell'interazione HTTP non è la mia preoccupazione, purtroppo. – zengr

+0

link betamax è morto, collegamento aggiornato a github -> https://github.com/betamaxteam/betamax –

0

Check out anystub. questo è java-lib. consente di registrare/riprodurre qualsiasi invocazione String get(String... keys) anziché solo traffico HTTP.