2009-11-26 11 views
5

La mia applicazione si collega a db e ottiene l'albero delle categorie da qui. In modalità debug posso vedere questo grande oggetto ad albero e ho appena pensato alla possibilità di salvare questo oggetto da qualche parte sul disco da usare negli stub di test. Come questo:Salvare l'oggetto in debug e utilizzarlo come stub nei test

mockedDao = mock(MyDao.class); 
when(mockedDao.getCategoryTree()).thenReturn(mySavedObject); 

Supponendo mySavedObject - è enorme abbastanza, così io non voglio generare manualmente o scrivere codice speciale generazione. Voglio solo essere in grado di serializzare e salvarlo da qualche parte durante la sessione di debug, quindi deserializzare e passare a thenReturn nei test. C'è un modo standard per farlo? In caso negativo, come è meglio attuare tale approccio?

+0

Quindi ogni caso di test deve decodificarlo? O vuoi de-serializzarlo in qualche metodo di installazione per la suite di test? –

+0

Vuoi deserializzare prima di ogni prova. Ad esempio nel metodo annotato con @Before annotazione jUnit. – Vladimir

risposta

2

I do love your idea, è fantastico!

Non sono a conoscenza di una libreria che offrirebbe questa funzionalità immediatamente. Puoi provare a utilizzare ObjectOutoutStream e ObjectInputStream (ovvero la serializzazione Java standard) se tutti gli oggetti implementano Seriablizable. In genere non lo fanno. In tal caso, potresti avere più fortuna usando XStream o uno dei suoi amici.

0

Dai un'occhiata a Dynamic Managed Beans - questo offre un modo per modificare i valori di un'applicazione java in esecuzione. Forse c'è un modo per definire un MBean che trattiene il tuo albero, leggi l'albero, lo memorizza da qualche parte e lo inietti nuovamente in seguito.

1

Di solito prendiamo in giro l'intero DB in tali scenari, riutilizzando (e testando implicitamente) il codice per caricare le categorie dal DB.

In particolare, i nostri test dell'unità sono eseguiti su un database in memoria (hsqldb), che inizializziamo prima di ogni esecuzione di prova importando i dati di test.

Problemi correlati