Voir le livre de Travailler de façon Efficace avec le Code existant par Michael Plumes.
En résumé, c'est beaucoup de travail de refactoriser le code existant dans vérifiés et testés code; Parfois, c'est trop de travail pour être pratique. Cela dépend de la taille de la base de code est, et combien les différentes classes et fonctions dépendent les uns des autres.
Refactoring sans tests d'introduire des changements dans les comportements (p. ex. des bugs). Et les puristes diront que ce n'est pas vraiment le refactoring, en raison de l'absence de tests afin de vérifier que le comportement ne change pas.
Plutôt que d'ajouter de test à travers le conseil d'administration à l'ensemble de votre demande à la fois, ajouter des tests lorsque vous travaillez dans une zone de code. Très probablement, vous aurez à revenir à ces "points chauds" de nouveau.
Ajouter des tests de bas en haut: test peu, indépendant des classes et des fonctions pour l'exactitude.
Ajouter des tests de haut en bas: Test ensemble de sous-systèmes, comme des boîtes noires de voir si son comportement change avec les changements dans le code. Et donc, vous pouvez les parcourir pour trouver ce qui se passe. Cette approche sera probablement que vous obtenez le plus d'avantages.
Ne pas être trop préoccupés d'abord de ce que le comportement "correct" est lors de l'ajout de tests, de chercher à détecter et à éviter les changements de comportement. Grand, non testés, souvent, les systèmes internes des comportements qui peuvent sembler incorrect, mais que d'autres parties du système dépendent.
Pensez à isoler les dépendances telles que la base de données, système de fichiers, réseau, de sorte qu'ils peuvent être permutées pour se moquer de fournisseurs de données en cours de test.
Si le programme ne dispose pas d'interfaces internes, des lignes qui définissent la frontière entre un sous-système ou de la couche et de l'autre, alors vous pourriez avoir à essayer d'introduire ces, et de tester chez eux.
Aussi, automatique se moquant de cadres comme Rhinomocks ou Moq peut aider à se moquer de classes existantes ici. Je n'ai pas vraiment trouvé la nécessité pour eux de code conçu pour la testabilité.