--
Has recibido este mensaje porque estás suscrito al grupo "TDDev" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a tdde...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a tddev-sp+u...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/tddev-sp?hl=es.
--
Justo eso, ahora mismo tienes una dependencia estática que hace que sea imposible probar tu clase sin probar a la vez el transformador, además si usáis spring!, tenéis inyección de dependencias, no hagáis clases de utilidad con métodos estáticos, inyectaros objetos colaboradores y tendréis no sólo un sistema más testable sino también más flexible para futuros cambios.
Depende de lo que modifiques, por lo general los test sólo te piden buen diseño, pero tampoco cometas atrocidades por hacer tus clases más fáciles de testear, no existe "un punto limite" es una cuestión de sentido común, buen diseño y de analizar cada caso.
Veo que no he terminado de explicar bien la estructura que hay...
Hay unas clases "servicios" que reciben un bean de los Action de Struts, estos servicios transforma este bean a través de los métodos estáticos, deciden qué hay que hacer con los datos, y le pasa a los DAOs los datos que necesitan para realizar sus operaciones. Las pruebas que estoy haciendo es probar los servicios de la forma más independiente posible, por supuesto usando mocks para los DAOs. Luego la idea es probar también de forma independiente los DAOs y luego ya hacer las pruebas de integración con los 2 juntos.
Me parece bien que este servicio reciba un objeto del tipo "transformador" y así le puedo pasar mocks y tiene más sentido que métodos estáticos... apuntado!!
Y tienes toda la razón en lo referente a la deuda técnica y tengo claro que la aplicación no está bien diseñada (de lo cual tengo yo bastante culpa). Metiendo los test aparte del objetivo claro de que la aplicación tenga test para probarse en condiciones, también tenía como objetivo encontrar este tipo de problemas y que me ayude a mejorar el diseño. El problema que tengo es que el jefe me sigue exigiendo avances en la aplicación (es decir, más ventanitas y más funcionalidad) por lo que los cambios de diseño los voy haciendo poco a poco. No significa que me conforme porque funciona, sino que no hay tiempo para todo.
Entiendo que los beans que las Action están haciendo llegar a tus servicios son ActionForms o algo parecido, es decir, DTOs, meros contenedores de datos... y que los tratas de transformar en otros DTOs para que los DAOs los puedan guardar en la BD. Creo que hemos leido el mismo libro... y estás sufriendo las mismas consecuencias que yo sufrí por esta (pésima) arquitectura. Es mucho mejor pasar de DTOs y hacer que las Actions llamen a los servicios con métodos menos genéricos y más semánticos. Te evitas transformaciones genéricas que, en realidad, están ocultando muchas reglas de negocio y te impiden encontrar mejores diseños y refactorizaciones.
Eso sí, si no tienes aire acondicionado en tu casa, el verano es un momento ideal para refactorizarlo todo: hay pocos compañeros que te puedan culpar y tienes mucho tiempo libre. (Era sarcasmo, ¡eh!)
--
Un saludo,
JMB
--