Attualmente sto refactoring una parte di un grande codebase senza test di unità di sorta. Ho provato a ridefinire il codice in modo brutale, cioè cercando di indovinare cosa sta facendo il codice e quali cambiamenti non cambierebbero il suo significato, ma senza successo: spezza casualmente le funzionalità attorno al codebase.
Si noti che il refactoring include lo spostamento del codice C # legacy in uno stile più funzionale (il codice precedente non utilizza nessuna delle funzionalità di .NET Framework 3 e successive, incluso LINQ), aggiungendo generici in cui il codice potrebbe trarne beneficio, ecc.
Non posso utilizzare metodi formali , visto quanto costerebbero.
D'altra parte, presumo che almeno "Ogni codice legacy refactored deve venire con test unitari" la regola dovrebbe essere rigorosamente rispettata, non importa quanto costerebbe. Il problema è che quando refactoring una piccola parte di un metodo privato 500 LOC, aggiungere test unitari sembra essere un compito difficile.
Che cosa può aiutarmi a sapere quali test unitari sono rilevanti per un dato pezzo di codice? Immagino che l'analisi statica del codice sarebbe in qualche modo utile, ma quali sono gli strumenti e le tecniche che posso usare per:
-
Sai esattamente quali test di unità dovrei creare,
-
E / o sapere se il cambiamento che ho fatto ha influenzato il codice originale in un modo che sta eseguendo in modo diverso da adesso?