Question

Mon application se connecte à la base de données et obtient l'arborescence des catégories à partir d'ici. En régime de débogage, je peux voir ce grand objet tree et je viens de penser à la possibilité de sauvegarder cet objet quelque part sur le disque pour l'utiliser dans les souches de test. Comme ceci:

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

En supposant que mySavedObject - soit suffisamment énorme, je ne souhaite pas le générer manuellement ni écrire du code de génération spécial. Je veux juste être capable de sérialiser et de le sauvegarder quelque part pendant la session de débogage, puis de le désérialiser et de le transmettre à thenReturn dans les tests. Existe-t-il un moyen standard de le faire? Sinon, comment mieux appliquer une telle approche?

Était-ce utile?

La solution

Je aime votre idée, c'est génial!

Je ne connais pas de bibliothèque qui offrirait cette fonctionnalité immédiatement. Vous pouvez essayer d'utiliser ObjectOutoutStream et ObjectInputStream (c'est-à-dire la sérialisation Java standard) si tous vos objets implémentent Seriablizable . En général, ils ne le font pas. Dans ce cas, vous pourriez avoir plus de chance en utilisant XStream ou l'un de ses amis.

Autres conseils

Nous simulons généralement l'ensemble de la base de données dans de tels scénarios, en réutilisant (et en testant implicitement) le code permettant de charger les catégories à partir de la base de données.

Plus précisément, nos tests unitaires sont exécutés sur une base de données en mémoire ( hsqldb ). , que nous initialisons avant chaque test en important des données de test.

Consultez les Beans gérés dynamiques - cela vous permet de modifier les valeurs d'un élément en cours d'exécution. application java. Peut-être qu’il ya un moyen de définir un MBean qui contient votre arbre, lisez-le, stockez-le quelque part et réinjectez-le plus tard.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top