escenario típico para mí:¿Cómo puedo generar el código fuente para crear un objeto que estoy depurando?
- El código heredado trabajo en tiene un error que sólo un cliente en la producción está teniendo
- que adjuntar un depurador y encontrar la manera de reproducir el problema en su sistema dado su entrada. Pero, no sé por qué el error está pasando todavía.
- Ahora quiero escribir una prueba automatizada en mi sistema local para tratar de reproducir a continuación, corregir el error
Ese último paso es muy duro. La entrada puede ser muy compleja y tener muchos datos. Crear la entrada a mano (p. Ej .: imagínese hacer esto 1000 veces para crear el objeto) es muy tedioso y propenso a errores. De hecho, puede notar que hay un error tipográfico en el ejemplo que acabo de dar.
¿Hay una manera automática de tomar un campo de un punto de interrupción en mi depurador y generar código fuente que crearía ese objeto, poblado de la misma manera?
Lo único que se me ocurre es serializar esta entrada (usando Xstream, por ejemplo). Puedo guardarlo en un archivo y volver a leerlo en una prueba automatizada. Esto tiene un problema importante: si la clase cambia de ciertas maneras (p. Ej .: se cambia el nombre de un campo/getter/setter), ya no podré deserializar el objeto. En otras palabras, las pruebas son extremadamente frágiles.
¿Podría aclarar por qué algo como XStream no encaja y por qué es absolutamente necesario generar código fuente? Esto sin duda ayudaría a obtener mejores respuestas. –
¿Cuál es el problema con la fragilidad a largo plazo de los casos de prueba para un evento de prueba de campo que desea resolver AHORA? –
@IraBaxter No hay nada de malo en eso a corto plazo. Pero si hay alguna genio biblioteca/técnica/estrategia para lidiar con esto mejor de lo que estoy actualmente, me gustaría saberlo. –