Pregunta

Mi aplicación se conecta a db y obtiene un árbol de categorías desde aquí. En el régimen de depuración puedo ver este gran objeto de árbol y solo pensé en la capacidad de guardar este objeto en algún lugar del disco para usarlo en trozos de prueba. Así:

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

Suponiendo que mySavedObject es lo suficientemente grande, así que no quiero generarlo manualmente o escribir código de generación especial. Solo quiero poder serializarlo y guardarlo en algún lugar durante la sesión de depuración, luego deserializarlo y pasarlo a thenReturn en las pruebas. ¿Existe una forma estándar de hacerlo? Si no, ¿cómo es mejor implementar dicho enfoque?

¿Fue útil?

Solución

Me do me encanta tu idea, ¡es increíble!

No conozco una biblioteca que ofrezca esa característica fuera de la caja. Puede intentar usar ObjectOutoutStream y ObjectInputStream (es decir, la serialización Java estándar) si todos sus objetos implementan Seriablizable . Por lo general no lo hacen. En ese caso, es posible que tenga más suerte usando XStream o uno de sus amigos.

Otros consejos

Usualmente nos burlamos de todo el DB en tales escenarios, reutilizando (y probando implícitamente) el código para cargar las categorías desde el DB.

Específicamente, nuestras pruebas unitarias se ejecutan en una base de datos en memoria ( hsqldb ) , que inicializamos antes de cada ejecución de prueba importando datos de prueba.

Eche un vistazo a Dynamic Managed Beans : esto ofrece una forma de cambiar los valores de una ejecución Aplicación Java. Quizás haya una manera de definir un MBean que contenga su árbol, leer el árbol, almacenarlo en algún lugar e inyectarlo nuevamente más tarde.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top