2010-06-27 30 views
8

Sto per iniziare a esaminare lo sviluppo con l'aiuto della copertura del codice e mi chiedo come si integri in genere con lo sviluppo basato sui test.TDD e copertura del codice

La copertura del codice è un ripensamento? Il vostro processo di andare qualcosa come

  1. scrivere un test per la funzionalità da attuare
  2. prova Run, assicurarsi che non riescono
  3. Implementare funzionalità
  4. prova Run, garantire che superino
  5. Write più test per la funzionalità fino al 100% (o quasi) copertura del codice ottenuta

Oppure si esegue la copertura del codice alla fine un sono stati implementati numerosi pezzi funzionali, quindi tornare indietro e lavorare fino al 100% di copertura?

La terza opzione a cui posso pensare è cercare una copertura del 100% prima di implementare anche la funzionalità.

Quale di questi è più comune e quali sono i vantaggi?

risposta

12

Non si scrivono test fino al raggiungimento della copertura del 100% del codice. Se hai seguito TDD, allora c'è no codice che sia mai stato scritto senza essere richiesto da un test, quindi dovresti essere sempre vicino al 100% di copertura.

Invece, si scrivono i test fino a quando non passano tutti i test e fino a quando non sono stati scritti tutti i test richiesti. Ciò implicherà che tutto il codice richiesto è stato scritto, dal momento che avrai solo un codice scritto se richiesto da un test.

+1

Sì, ho iniziato a TDD di recente e sono rimasto piacevolmente sorpreso di scoprire che i test e il codice scrivere dopo mi è stato fatto per una coppia delle classi, lo strumento di copertura del codice che utilizziamo ha riportato una copertura del 100%. Non dovevo pensare alla copertura, ho solo fatto in modo di aver scritto solo il codice necessario per far passare un test. Se mi trovassi a scrivere accidentalmente troppo codice, tenterei di commentarlo a caso, e se nessun test avesse improvvisamente iniziato a fallire, sapevo che non avevo scritto abbastanza test. – SCFrench

1

Con TDD si dovrebbe quasi sempre avere una copertura del 100% quando si sviluppa un nuovo codice poiché non si sviluppa alcun codice che non è necessario superare i test. Solo quando pensi che il codice sia così semplice che non hai bisogno di un test (ad esempio, come una proprietà automatica in C#), dovresti avere un codice che non è specificamente coperto. È possibile, attraverso il refactoring, introdurre a volte blocchi non necessari o modificare il codice in modi imprevisti, quindi è consigliabile utilizzare la copertura in quel punto per assicurarsi di non aver introdotto accidentalmente codice non testato. A parte questo, direi che lo uso più come controllo di sanità mentale e faccio periodicamente analisi di copertura per gli stessi motivi. Può anche essere molto utile quando la tua disciplina si rompe e hai trascurato di lavorare in modo TDD.

0

Ricordare che è possibile avere un test che utilizza effettivamente il codice che viene coperto dalla coincidenza. È necessario fare attenzione a questo, soprattutto quando si avvia TDD. Oh, sono in questa funzione e so che avrò bisogno di aggiungere questa piccola e sottile zecca per cena mentre ci sono, perché non un'altra zecca. Prima che tu lo sappia hai un sacco di codice non testato.

Write test: Fail scrivere codice: Pass Refactor: Pass

Goto top

Problemi correlati