Je suis un programmeur en pleine croissance qui met enfin en pratique les tests unitaires pour une bibliothèque que je stocke sur GitHub.
Je me suis dit que je pourrais peut-être inclure les suites de tests dans le référentiel, mais lorsque je regarde d’autres projets, l’inclusion de tests semble aléatoire.
Est-ce considéré comme une mauvaise forme? L'idée est-elle que les utilisateurs ne sont intéressés que par le code de travail et qu'ils vont quand même tester dans leur propre framework?
version-control
unit-testing
parisminton
la source
la source
Réponses:
Vous devriez absolument mettre vos tests dans le référentiel. À mon avis, les tests font partie du code et peuvent aider les autres à le comprendre (s'ils sont bien écrits). En outre, ils peuvent aider les autres lors des modifications ou des contributions à votre base de code. De bons tests peuvent vous donner l'assurance que vos modifications ne cassent rien par inadvertance.
Le code de test doit cependant être bien séparé du code de production. Maven, par exemple, y parvient en plaçant le code de production et de test dans différents dossiers. La question "ce fichier fait-elle partie de la production ou du code de test" ne devrait jamais se poser.
Personnellement, je n'écris pas de tests unitaires pour les bibliothèques utilisées dans mon propre code. Je m'attends à ce qu'ils fonctionnent (du moins lorsque j'utilise une version, bien que des bogues puissent évidemment apparaître). Il offre une certaine couverture de test dans les tests d'intégration, mais cela ne suffit pas.
la source
Si vous n'incluez pas les tests unitaires dans le code source enregistré, alors:
En bout de ligne, j’envisagerais de ne pas inclure de tests unitaires écrits dans le référentiel officiel du code source, ce qui est une très mauvaise chose.
la source
Bien sûr, vous devriez mettre des tests unitaires dans le référentiel, pour plusieurs raisons:
la source
S'il y a une chance de les exécuter sur un autre ordinateur, incluez-les définitivement. Ils devraient être construits séparément, de sorte que les utilisateurs ne soient pas obligés de le faire et qu'ils puissent avoir des dépendances supplémentaires, mais ils devraient certainement être inclus.
Je soupçonne fortement que la plupart des projets qui n'incluent pas de tests dans le référentiel n'en ont tout simplement pas.
Il peut y avoir une raison d'avoir les tests en tant que module séparé afin que vous puissiez facilement exécuter de nouveaux tests avec un code plus ancien. Cela serait utile pour les tests de bibliothèques stables ou de boîtes noires via une ligne de commande; l'utilité pour les langages compilés où les nouveaux tests ne compileront probablement pas avec un code plus ancien est limitée.
la source
Absolument. Les points bonus supplémentaires ici sont dans la capacité de suivre que la version X d'un fichier source va avec la version Y d'un test. En d'autres termes, vous devez être en mesure de revenir à une version précédente et d'extraire les tests appropriés conçus pour cette version (en cas de changement ou de modification de l'API).
la source
Je viens juste de terminer la lecture de "Brownfield Application Development in .Net" , ce qui fournit d'excellents conseils sur la structure d'une application, y compris le contrôle de la source, et où / comment / pourquoi inclure des tests unitaires (en particulier dans le domaine de l'intégration continue). . Si vous êtes un développeur .Net, je le recommanderais.
la source