Salvare l'oggetto nel debug e utilizzarlo come stub nei test
-
05-07-2019 - |
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?
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.