Domanda

La mia applicazione si collega a db e ottiene un albero di categorie da qui. Nel regime di debug posso vedere questo grande oggetto ad albero e ho solo pensato alla possibilità di salvare questo oggetto da qualche parte sul disco da usare negli stub di test. In questo modo:

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

Supponendo mySavedObject - è abbastanza grande, quindi non voglio generarlo manualmente o scrivere codice di generazione speciale. Voglio solo essere in grado di serializzare e salvarlo da qualche parte durante la sessione di debug, quindi deserializzarlo e passare a quindi Return nei test. Esiste un modo standard per farlo? In caso contrario, come è meglio attuare tale approccio?

È stato utile?

Soluzione

I amo la tua idea, è fantastico!

Non sono a conoscenza di una libreria in grado di offrire tale funzionalità immediatamente. Puoi provare a usare ObjectOutoutStream e ObjectInputStream (ovvero la serializzazione Java standard) se tutti i tuoi oggetti implementano Seriablizable . In genere no. In tal caso, potresti avere più fortuna utilizzando XStream o uno dei suoi amici.

Altri suggerimenti

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

In particolare, i nostri test unitari vengono eseguiti su un database in memoria ( hsqldb ) , che inizializziamo prima di ogni esecuzione di test importando i dati di test.

Dai un'occhiata a Dynamic Managed Beans - questo offre un modo per cambiare i valori di una corsa applicazione java. Forse c'è un modo per definire un MBean che trattiene il tuo albero, leggere l'albero, memorizzarlo da qualche parte e iniettarlo di nuovo in seguito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top