Quello che descrivi potrebbe in realtà non essere una cosa negativa, ma un indicatore di problemi più profondi che i tuoi test scoprono
Man mano che il sistema cambia, ci ritroviamo a dedicare più tempo a riparare i test rotti. Abbiamo test unitari, di integrazione e funzionali.
Se potessi cambiare il tuo codice e i tuoi test non si interrompessero, ciò sarebbe sospetto per me. La differenza tra una modifica legittima e un bug è solo il fatto che è richiesta, ciò che viene richiesto è (presunto TDD) definito dai test.
i dati sono stati codificati.
I dati hard coded nei test sono una buona cosa. I test funzionano come falsificazioni, non come prove. Se il calcolo è eccessivo, i test potrebbero essere tautologie. Per esempio:
assert sum([1,2,3]) == 6
assert sum([1,2,3]) == 1 + 2 + 3
assert sum([1,2,3]) == reduce(operator.add, [1,2,3])
Maggiore è l'astrazione, più ci si avvicina all'algoritmo e, quindi, più vicino a confrontare l'implementazione acuta con se stesso.
pochissimo riutilizzo del codice
Il miglior riutilizzo del codice nei test è imho 'Checks', come in jUnits assertThat
, perché rendono semplici i test. Oltre a ciò, se i test possono essere rifattorizzati per condividere il codice, è probabile che lo sia anche il vero codice testato , riducendo così i test a quelli che testano la base refactored.