Non mi è mai piaciuto il test delle unità. Ho sempre pensato che aumentasse la quantità di lavoro che dovevo fare.
Risulta, questo è vero solo in termini di numero effettivo di righe di codice che scrivi e inoltre, questo è completamente compensato dall'aumento del numero di righe di codice utile che puoi scrivere in un'ora con test e sviluppo guidato da test.
Ora amo i test unitari in quanto mi permettono di scrivere codice utile, che spesso funziona prima volta! (bussa sul legno)
Ho scoperto che le persone sono riluttanti a fare test unitari o avviare un progetto con sviluppo guidato dai test se sono sottoposti a rigide tempistiche o in un ambiente in cui altri non lo fanno, quindi non lo fanno. Un po 'come, un rifiuto culturale di provare anche.
Penso che una delle cose più potenti riguardo ai test unitari sia la sicurezza che ti dà di intraprendere il refactoring. Dà anche una nuova speranza, che posso dare il mio codice a qualcun altro per refactoring / migliorare, e se i miei test di unità funzionano ancora, posso usare la nuova versione della libreria che hanno modificato, praticamente, senza paura.
È questo l'ultimo aspetto dei test unitari che penso abbia bisogno di un nuovo nome. Il test unitario è più simile a un contratto di ciò che questo codice dovrebbe fare ora e in futuro.
Quando ascolto la parola test, penso ai topi in gabbia, con più esperimenti su di loro per vedere l'efficacia di un composto. Questo non è il test unitario, non stiamo provando un codice diverso per vedere quale sia l'approccio più affettivo, stiamo definendo quali output ci aspettiamo con quali input. Nell'esempio dei topi, i test unitari sono più come le definizioni di come l'universo funzionerà rispetto agli esperimenti fatti sui topi.
Sono in crisi o qualcun altro vede questo rifiuto di fare test e pensano che sia un motivo simile per cui non vogliono farlo?
Quali sono le ragioni che voi / altri danno per non provare?
Cosa pensi che le loro motivazioni non siano nel test unitario?
E come nuovo nome per le unit test che potrebbero superare alcune obiezioni, che ne dici di jContract? (Un po 'di Java centrico che conosco :), o Contratti di Unità?