scenario tipico per me:Come posso generare il codice sorgente per creare un oggetto che sto eseguendo il debug?
- Il codice legacy Io lavoro su ha un bug che solo un cliente nella produzione sta avendo
- ho collegare un debugger e capire come riprodurre il problema su loro sistema dato l'input. Ma, non so perché l'errore si sta ancora verificando.
- Ora voglio scrivere un test automatico sul mio sistema locale per cercare di riprodurre poi correggere il bug
Questo ultimo passo è davvero difficile. L'input può essere molto complesso e avere molti dati. Creare l'input a mano (es: immagina di farlo 1000 volte per creare l'oggetto) è molto noioso e soggetto a errori. In effetti potresti notare un errore di battitura nell'esempio che ho appena dato.
C'è un modo automatico per prelevare un campo da un punto di interruzione nel mio debugger e generare un codice sorgente che creerebbe quell'oggetto, popolato nello stesso modo?
L'unica cosa che è venuta in mente è quello di serializzare questo ingresso (usando Xstream, per esempio). Posso salvarlo in un file e leggerlo di nuovo in un test automatico. Questo ha un grosso problema: se la classe cambia in determinati modi (ad esempio: un nome campo/getter/setter viene rinominato), non potrò più deserializzare l'oggetto. In altre parole, i test sono estremamente fragili.
Potrebbe chiarire perché qualcosa come XStream non si adatta e perché è assolutamente necessario generare codice sorgente? Questo sicuramente aiuterebbe a ottenere risposte migliori. –
Qual è il problema con la fragilità a lungo termine dei casi di test per un evento di test sul campo che vuoi risolvere ORA? –
@IraBaxter Non c'è niente di sbagliato in questo a breve termine. Ma se c'è una bella biblioteca/tecnica/strategia là fuori per affrontare meglio di quanto non sia attualmente, mi piacerebbe sentirne parlare. –