Je veux présenter le concept des tests unitaires (et des tests en général) à mes collègues; en ce moment, il n'y a aucun test du tout et les choses sont testées en effectuant les tâches via l'interface utilisateur pour voir le résultat souhaité. Comme vous pouvez l'imaginer, le code est très étroitement couplé à l'implémentation exacte - ce qui entraîne même que le code qui devrait être dans une classe et réutilisé dans le système soit copié et collé entre les méthodes.
En raison des exigences modifiées, on m'a demandé de modifier un module que j'ai écrit précédemment et qui est assez peu couplé (pas autant que je le souhaiterais, mais du mieux que je peux obtenir sans avoir à introduire beaucoup d'autres concepts). J'ai décidé d'inclure une suite de tests unitaires avec mon code révisé pour "prouver" qu'il fonctionne comme prévu et montrer comment les tests fonctionnent; Je ne suis pas en train de suivre le vrai TDD car une partie du code est déjà écrit mais j'espère suivre certains concepts TDD pour le nouveau code que je devrai créer.
Maintenant, inévitablement, je suis sûr qu'on me demandera pourquoi cela me prend plus d'un jour ou deux pour écrire le code, car des parties de ce avec quoi je vais interagir existent déjà dans le système (bien que sans aucun test et très étroitement couplé), et quand je vérifierai le code, on me demandera ce qu'est ce projet "Tests". Je peux expliquer les bases des tests, mais je ne peux pas expliquer les avantages réels d'une manière que les autres comprendraient (car ils pensent que les tests vous obligent à exécuter l'application vous-même, car souvent l'interface utilisateur réelle est importante pour déterminer si la fonctionnalité "fonctionne" " ou pas). Ils ne comprennent pas l'idée d'un couplage lâche (clairement évident par le fait que rien n'est lâchement couplé; il n'y a même pas d'interfaces en dehors du code que j'ai écrit), donc essayer de l'utiliser comme un avantage me gagnerait probablement un "Huh?" genre de look, et encore une fois, je ne peux pas être aussi lâche que je le voudrais sans avoir à retravailler plusieurs modules existants et probablement introduire une sorte de conteneur IoC, qui serait considéré comme une perte de temps et non une "programmation".
Quelqu'un a-t-il des suggestions sur la façon dont je peux pointer vers ce code et dire "Nous devrions commencer à créer des tests unitaires" sans se présenter comme condescendant (par exemple, "L'écriture de tests vous oblige à écrire du bon code.", Ce qui serait probablement considéré comme du code sauf que la mienne est mauvaise ) ou sans donner l'impression que c'est une perte de temps qui n'ajoute aucune valeur réelle?