Si j’ai déjà un test d’intégration pour mon programme et que tous ont réussi, j’ai le sentiment que cela fonctionnera. Alors quelles sont les raisons pour écrire / ajouter des tests unitaires? De toute façon, comme je dois déjà écrire des tests d'intégration, j'aimerai écrire uniquement des tests unitaires pour les parties non couvertes par les tests d'intégration.
Ce que je sais des avantages des tests unitaires par rapport aux tests d'intégration
- Petit et donc rapide à exécuter (mais ajouter une nouvelle unité pour tester quelque chose a déjà été testé avec un test d'intégration signifie que ma combinaison de test devient plus grande et plus longue à fonctionner)
- Localisez le bogue plus facilement car il ne teste qu'une chose (mais je peux démarrer le test unitaire d'écriture pour vérifier chaque pièce individuellement lorsque mon test d'intégration a échoué)
- Trouvez un bug qui peut ne pas être pris dans le test d'intégration. par exemple masquer / compenser les bugs. (Mais si tous les tests d'intégration réussissent, ce qui signifie que mon programme fonctionnera même s'il existe un bogue caché. Donc, trouver / corriger ces bogues ne sont pas vraiment une priorité élevée, à moins qu'ils ne cassent les futurs tests d'intégration ou ne causent pas de problèmes de performances)
Et nous voulons toujours écrire moins de code, mais écrire des tests unitaires nécessite beaucoup plus de code (principalement des objets fictifs). La différence entre certains de mes tests unitaires et mes tests d'intégration réside dans le fait que, dans les tests unitaires, j'utilise un objet factice et dans les tests d'intégration, j'utilise un objet réel. Qui ont beaucoup de duplication et je n'aime pas le code dupliqué, même dans les tests car cela ajoute une surcharge pour changer le comportement du code (l'outil de refactorisation ne peut pas tout faire tout le temps).