Ce que vous décrivez n'est peut-être pas une si mauvaise chose, mais un indicateur de problèmes plus profonds découverts par vos tests
À mesure que le système change, nous passons plus de temps à réparer les tests brisés. Nous avons des tests unitaires, d'intégration et fonctionnels.
Si vous pouviez changer votre code et que vos tests ne se cassaient pas , ce serait suspect pour moi. La différence entre un changement légitime et un bogue n'est que le fait qu'il est demandé, ce qui est demandé est (supposé TDD) défini par vos tests.
les données ont été codées en dur.
Les données codées en dur dans les tests sont à mon humble avis une bonne chose. Les tests fonctionnent comme des falsifications, pas comme des preuves. S'il y a trop de calcul, vos tests peuvent être des tautologies. Par exemple:
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])
Plus l'abstraction est élevée, plus vous vous rapprochez de l'algorithme, et par là, plus proche de la comparaison de l'implémentation acutale à elle-même.
très peu de réutilisation du code
La meilleure réutilisation du code dans les tests est à mon humble avis, comme dans jUnits assertThat
, car ils gardent les tests simples. En plus de cela, si les tests peuvent être refactorisés pour partager du code, le code réel testé peut également l'être , réduisant ainsi les tests à ceux testant la base refactorisée.