Domanda

Ho una soluzione a cui manca molta copertura del codice. Ho bisogno di refactoring questo codice per disaccoppiare per iniziare a creare unit test. Qual è la migliore strategia? In primo luogo sto pensando che dovrei spingere per disaccoppiare la logica aziendale dall'accesso ai dati da businessobjects per ottenere prima qualche organizzazione e poi approfondire da lì. Poiché molte delle classi non supportano un unico principio responsabile, è difficile iniziare a testarle.

Ci sono altri suggerimenti o migliori pratiche da prendere una soluzione legacy e metterla in forma per essere pronta per la copertura del codice e test unitari?

È stato utile?

Altri suggerimenti

Una delle cose più importanti da fare e i modi migliori per avvicinarsi al codice legacy sono i difetti. È un processo che continuerai a fare anche con qualsiasi base di codice a cui introduci test unitari. Ogni volta che viene segnalato un difetto, scrivere un test unitario che esporrà il difetto. Scoprirai rapidamente che il codice che si spezzerebbe su base regolare (cioè " Oh, yay. Il metodo plugh () nella classe xyzzy è rotto di nuovo !) Inizierà a rompersi sempre meno.

Davvero, inizia a farlo. Non avrai una copertura eccezionale in un'applicazione legacy durante la notte. Inizia colpendo il codice che è più incline alla rottura e inizia a diramare. Assicurati che anche ogni nuovo sviluppo all'interno del codice abbia una copertura del codice più elevata.

Ricorda che il mantra di TDD è "rosso / verde / refattore" e potresti voler esaminare gli strumenti di refactoring per aiutare a svolgere alcuni dei noiosi compiti che lo accompagnano. Il ReSharper di JetBrain è popolare e la mia scelta personale.

Suggerisco di creare prima i test per il codice esistente, fino a quando non si ha una copertura sufficiente. È necessario testare il codice in quanto è per assicurarsi di non rompere nulla durante il refactoring. Ovviamente, vorrai fare questo pezzo per pezzo, scrivendo test per un modulo, quindi rifattorizzandolo prima di passare a quello successivo. Una volta che hai una buona copertura puoi decidere se vale la pena continuare con il refactoring solo per rendere il codice più testabile. Dalla tua descrizione, sospetto che lo sarà.

Inizia creando i test. Rifattorizzare il codice in base alle esigenze per supportare i test.

Queste sono linee guida generiche che trovo utili per i test unitari:

1) Identifica gli oggetti limite (Win / WebForms, CustomControls ecc.)

2) Identifica gli oggetti di controllo (oggetti del livello aziendale)

3) Scrivere unit test solo per i metodi pubblici degli oggetti di controllo richiamati dagli oggetti limite. In questo modo sarai sicuro di coprire i principali aspetti funzionali della tua app.

Nel tuo caso, se le regole aziendali sono strettamente accoppiate con gli oggetti di confine sei nei guai - a mio avviso, dovresti provare a riformattare le tue cose concentrandoti sui punti caldi in base ai requisiti funzionali della tua app.

La fattibilità di questo ovviamente dipende fortemente dal caso specifico.

Devi testare il tuo codice per assicurarsi che non rompa nulla durante il refactoring.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top