À moins que vous n'écriviez du code sans le tester, vous devrez toujours supporter le coût des tests.
La différence entre avoir des tests unitaires et ne pas les avoir est la différence entre le coût de la rédaction du test et son coût d'exécution par rapport au coût du test manuel.
Si le coût de l'écriture d'un test unitaire est de 2 minutes et que le coût de l'exécution du test unitaire est pratiquement égal à 0, mais que le coût du test manuel du code est de 1 minute, vous arrêtez même si vous avez exécuté le test deux fois.
Pendant de nombreuses années, j'ai eu la fausse impression que je n'avais pas assez de temps pour écrire des tests unitaires pour mon code. Lorsque j’écrivais des tests, ils étaient gonflés et constituaient des choses lourdes qui ne m’avaient incité à penser que je ne devrais écrire des tests unitaires que lorsque je savais que c’était nécessaire.
Récemment, on m'a encouragé à utiliser Test Driven Development et j'ai trouvé qu'il s'agissait d'une révélation complète. Je suis maintenant fermement convaincu que je n'ai pas le temps de ne pas écrire de tests unitaires .
D'après mon expérience, en développant en gardant à l'esprit les tests, vous obtenez des interfaces plus propres, des classes et des modules plus ciblés et généralement plus de code SOLID testable.
Chaque fois que je travaille avec du code existant qui ne comporte pas de tests unitaires et que je dois tester manuellement quelque chose, je continue de penser "cela serait tellement plus rapide si ce code comportait déjà des tests unitaires". Chaque fois que je dois essayer d'ajouter une fonctionnalité de test unitaire au code avec un couplage élevé, je continue de penser "cela serait tellement plus facile si cela avait été écrit de manière découplée".
Version TL; DR :
Rédigez un test lorsque le coût de la rédaction du test, plus le coût de son exécution autant de fois que nécessaire, risque d'être inférieur au coût de son test manuel autant de fois que nécessaire.
Rappelez-vous cependant que si vous utilisez TDD, le coût de la rédaction des tests diminuera probablement à mesure que vous vous améliorerez, et à moins que le code ne soit absolument trivial, vous finirez probablement par exécuter vos tests plus souvent que prévu.