Je sais que c'est une question très ancienne, mais je voudrais ajouter mon expérience là-bas, j'ai récemment changé l'habitude de test unitaire de projets séparés à un même.
Pourquoi?
Premièrement, je suis très enclin à garder la même structure de dossier de projet principal avec le projet de test. Donc, si j'ai un fichier sous, Providers > DataProvider > SqlDataProvider.cs
je crée la même structure dans mes projets de test unitaire commeProviders > DataProvider > SqlDataProvider.Tests.cs
Mais une fois que le projet devient de plus en plus gros, une fois que vous déplacez des fichiers d'un dossier à un autre, ou d'un projet à un autre, il devient très fastidieux de les synchroniser avec les projets de test unitaire.
Deuxièmement, il n'est pas toujours très facile de naviguer de la classe à tester à la classe de test unitaire. C'est encore plus difficile pour JavaScript et Python.
Récemment, j'ai commencé à pratiquer cela, chaque fichier que j'ai créé (par exemple SqlDataProvider.cs
) je crée un autre fichier avec le suffixe Test, commeSqlDataProvider.Tests.cs
Au début, il semble que cela gonflera les fichiers et les références de bibliothèque, mais à long terme, vous éliminerez le syndrome des fichiers en mouvement à première vue, et vous vous assurerez également que chaque fichier qui est candidat au test aura un fichier paire avec .Tests
suffixe. Il vous permet de sauter facilement dans le fichier de test (car il est côte à côte) au lieu de parcourir un projet séparé.
Vous pouvez même écrire des règles métier pour parcourir le projet et identifier la classe qui n'a pas de fichier .Tests, et les signaler au propriétaire. Vous pouvez également indiquer facilement à votre testeur de cibler les .Tests
classes.
Surtout pour Js et Python, vous n'aurez pas besoin d'importer vos références à partir d'un chemin différent, vous pouvez simplement utiliser le même chemin du fichier cible en cours de test.
J'utilise cette pratique depuis un certain temps et je pense que c'est un compromis très raisonnable entre la taille du projet par rapport à la maintenabilité et la courbe d'apprentissage pour les nouveaux arrivants au projet.