2011-11-26 24 views
13

Voglio testare la classe con make db connection. La classe che voglio testare accetta come parametro nella classe Connection del costruttore. Voglio passare l'oggetto mock al costruttore. Puoi dirmi un buon framework con esempio come simulare la connessione db?Connessione al database simulato Java

+1

Potresti essere interessato a questa risorsa: http://programmers.stackexchange.com/questions/118933/what-elements-of-my-junits-should-i-mock –

risposta

10

È possibile utilizzare MockRunner, che supporta JDBC. Anche i framework di derisione generici come Mockito funzioneranno, ma JDBC è un insieme di interfacce che si restituiscono a vicenda in modo che la padronanza delle mani sia difficile. Guardate voi stessi: How to stub/mock JDBC ResultSet to work both with Java 5 and 6?

Tuttavia beffardo JDBC è così fragile e verbose (non importa quali strumenti si utilizzano) che vorrei suggerire sia astrarre l'accesso JDBC all'interno di qualche strato DAO sottile (vedi @duffymo risposta) o andare per a - database di memoria come H2.

Consulta anche:

+0

http://mockrunner.github.io/dice nel sito che ospita la versione aggiornata pvi :) –

3

Connessione è un'interfaccia. Qualsiasi struttura di derisione sarà in grado di deriderlo: EasyMock, Mockito, ...

Mocking non è diverso dal prendere in giro qualsiasi altra interfaccia Java.

1

puoi provare a easymock. è facile da usare, penso. puoi trovare un tutorial di riferimento. easymock

3

non vorrei creare una connessione finto - non prova nulla, a mio parere.

Posso capire perché si dovrebbe prendere in giro il repository/DAO stesso dopo averlo testato completamente con una connessione attiva. Daresti il ​​repository/DAO finto a un servizio o ad un altro client perché lo hai già testato, non c'è bisogno di provare che funzioni finché non esegui un test di integrazione.

1

Se si sta riutilizzando tale simulazione in molti casi di test, è anche possibile prendere in considerazione l'implementazione della propria implementazione della connessione e riutilizzarla ovunque.

3

È possibile utilizzare un quadro beffardo come quelli menzionati nella risposta di cui sopra (io personalmente uso EasyMock) O Creare Possiedi un oggetto fittizio:

class FakeConnection extends Connection{ 
     // Overrive all method behavious you want to fake. 
} 
1

quadro Accolito è utile per tali scopi ->https://github.com/cchantep/acolyte.

Con questa libreria è possibile creare un'istanza di connessione per la quale si fornisce il gestore. Implementando il gestore, si è in grado di "inviare" query o aggiornamenti: produzione di gruppi di risultati o conteggio degli aggiornamenti (o avviso).

Problemi correlati