Non mi è mai piaciuto test unitari. 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 dai test.
Ora adoro i test unitari perché mi permettono di scrivere codice utile, che abbastanza spesso funziona per la prima volta! (toccando ferro)
Ho scoperto che le persone sono riluttanti a fare unit test o ad avviare un progetto con sviluppo test driven se si trovano in tempi rigorosi o in un ambiente in cui gli altri non lo fanno, quindi non lo fanno. Un po 'come, un rifiuto culturale di provare anche.
Penso che una delle cose più potenti del test unitario sia la fiducia che ti dà per intraprendere il refactoring. Dà anche nuova speranza trovata, che posso dare il mio codice a qualcun altro per refactoring / miglioramento, e se i miei test unitari continuano a funzionare, posso usare la nuova versione della libreria che hanno modificato, praticamente, senza paura.
È quest'ultimo aspetto del test unitario che penso abbia bisogno di un nuovo nome. Il test unitario è più simile a un contratto su ciò che questo codice dovrebbe fare ora e in futuro.
Quando sento la parola test, penso ai topi nelle gabbie, con più esperimenti fatti su di loro per vedere l'efficacia di un composto. Non è questo il test unitario, non stiamo provando un codice diverso per vedere qual è l'approccio più affettivo, stiamo definendo quali output ci aspettiamo con quali input. Nell'esempio dei topi, i test unitari sono più simili alle definizioni di come funzionerà l'universo rispetto agli esperimenti condotti sui topi.
Sono in crisi o qualcun altro vede questo rifiuto di fare test e pensa che sia un motivo simile per cui non vuole farlo?
Quali motivi fornisci tu / altri per non eseguire i test?
Quali pensi siano le loro motivazioni nel non test unitario?
E come nuovo nome per i test unitari che potrebbero superare alcune delle obiezioni, che ne dici di jContract? (Un po 'incentrato su Java che conosco :) o Contratti unitari?