Serghei, comme le souligne Daniel Hilgarth, il est conseillé d'inclure les projets de tests unitaires dans votre solution principale. De plus, il est conseillé d'avoir une relation 1:1 entre vos projets de développement et vos projets de tests unitaires.
Ceci étant dit, il est important de noter que le nombre de projets dans une solution augmente le temps de construction de manière non linéaire.
Un projet sur lequel j'ai travaillé récemment comportait 97 projets dans une solution ! Le temps de construction était de plus de 10 minutes. En consolidant le code dans un nombre réduit de projets, le temps de construction a été réduit à 2 minutes pour la même LOC.
La perte de productivité des développeurs au détriment de la "justesse" peut s'avérer très coûteuse à long terme. Il ne s'agit pas seulement du temps de construction perdu, mais aussi du temps perdu en raison d'une interruption de la concentration, de l'agacement du développeur, etc. Combien de fois vous est-il arrivé personnellement d'être bloqué par la lenteur d'une construction, d'un ordinateur ou d'un IDE et de finir par naviguer sur le web, perdant ainsi 10 minutes avant de réaliser "Oh, la construction est terminée ! J'ai été dans une telle situation que le temps passé entre les builds était passé à surfer sur des sites d'emploi ;-)
C'est ce que j'ai fait en guise de solution de contournement pour les solutions de grande envergure.
- Créer une solution unique pour le développement léger (projets de développement uniquement)
- Créez-en un autre pour les mêmes projets de développement et les tests unitaires.
- Gardez les deux instances de Visual Studio ouvertes pendant le développement. De cette façon, j'obtiens un cycle court de construction/exécution/débogage pour le développement, mais je peux vérifier l'état des tests (compilation, exécution) à tout moment.
- Au moment de l'enregistrement, je m'assure que le projet de développement et de tests unitaires se construit, que les tests sont réussis et que je m'enregistre.
Cela introduit la possibilité que vos tests unitaires ne se construisent pas car votre code de développement diverge du code attendu par les tests unitaires, mais il s'agit d'un équilibre. Un compromis doit être fait pour assurer la plus grande productivité, que ce soit par le développement pur ou par le temps consacré à la correction des tests défectueux, à tout moment. La productivité peut être érodée non seulement par la lenteur de la construction et de l'IDE, mais aussi par la correction des tests défectueux ; il faut donc veiller à ne pas aller trop loin dans l'équilibre.
Une dernière remarque s'impose. Avez-vous envisagé de configurer un fichier batch de la console pour exécuter la construction de la ville de l'équipe sur les PC de développement locaux ? Cette opération peut être effectuée comme dernière étape avant le check-in pour s'assurer que les développeurs vérifient le code qui se construit et passe conformément à la configuration du CT.
Je vous prie d'agréer, Madame, Monsieur, l'expression de mes salutations distinguées,