Existe-t-il des applications open source développées à l'aide d'un développement piloté par les tests qui servent de modèles de fonctionnement des tests unitaires?
Je préfère voir des exemples en C # et .NET. (Notez que j'ai mentionné des applications, pas seulement des bibliothèques.)
Je suis un programmeur de niveau intermédiaire qui veut vraiment croire et pratiquer le TDD. L'application sur laquelle je travaille dans mon travail de jour est assez compliquée - environ 1 million de lignes de code - et j'aimerais introduire plus de tests unitaires. Nous avons quelques tests unitaires en place, mais mes efforts à TDD et à travailler sur du code qui est déjà en cours de test n'ont pas été encourageants.
Dans mon expérience certes limitée, TDD semble encourager une grande complexité au nom du découplage. Les bits de l'application qui sont difficiles à tester - et qui ont tendance à être critiques par coïncidence - sont poussés vers la périphérie, dans le domaine des tests d'intégration qui peuvent ou non être écrits. (Je pense aux suspects habituels ici, à l'accès au système de fichiers, à l'hydratation des objets d'une base de données, aux appels Web asynchrones, etc.)
Le code en cours de test a tendance à impliquer beaucoup de collaboration entre les objets, et peut-être une logique de flux simple, qui se produit tous en mémoire et qui pourrait sans doute être écrite d'une manière plus simple et plus compréhensible si tout n'avait pas à être totalement découplé pour tester.
Je comprends les techniques de moquerie des dépendances et autres, mais d'après mon expérience, une utilisation intensive de la moquerie conduit à des tests très fragiles. Si mon premier instinct en voyant un tas de tests devenir rouge est: "Génial, maintenant je dois réparer toutes les moqueries", alors mes tests sont devenus une traînée plutôt qu'un filet de sécurité.
J'essaie de dépasser cette barrière mentale, et dans le cadre de cela, je lis le livre de Michael Feathers, Working Effectively with Legacy Code . J'espère qu'il me montrera une partie de ce qui me manque.
J'aimerais également étudier certaines applications .NET non triviales avec une bonne couverture de code, peut-être un système de gestion de contenu ou une application CRUD. Je vais probablement examiner le cadre de test FitNesse dont Oncle Bob parle, mais ce serait bien de voir quelque chose écrit dans la langue que je connais le mieux.
Toutes suggestions ou paroles de sagesse seraient appréciées.