Je teste en unité une application .NET (.exe) qui utilise un fichier app.config pour charger les propriétés de configuration. L'application de test unitaire elle-même n'a pas de fichier app.config.
Lorsque j'essaie de tester unitaire une méthode qui utilise l'une des propriétés de configuration, elles retournent null . Je suppose que c'est parce que l'application de test unitaire ne va pas se charger dans le app.config de l'application cible.
Existe-t-il un moyen de remplacer cela ou dois-je écrire un script pour copier le contenu de l'app.config cible dans un app.config local?
Ce message pose en quelque sorte cette question mais l'auteur la regarde vraiment sous un angle différent de celui que je suis.
EDIT: Je dois mentionner que j'utilise VS08 Team System pour mes tests unitaires.
la source
Dans Visual Studio 2008, j'ai ajouté le
app.config
fichier au projet de test en tant qu'élément existant et sélectionné la copie en tant que lien afin de m'assurer qu'il n'est pas dupliqué. De cette façon, je n'ai qu'un seul exemplaire dans ma solution. Avec plusieurs projets de test, c'est vraiment pratique!la source
Que vous utilisiez Team System Test ou NUnit , la meilleure pratique consiste à créer une bibliothèque de classes distincte pour vos tests. Le simple fait d'ajouter un App.config à votre projet de test sera automatiquement copié dans votre dossier bin lors de la compilation .
Si votre code repose sur des tests de configuration spécifiques, le tout premier test que j'écrirais valide que le fichier de configuration est disponible ( pour que je sache que je ne suis pas fou ):
Et le test:
Idéalement, vous devriez écrire du code de sorte que vos objets de configuration soient passés dans vos classes. Cela vous sépare non seulement du problème du fichier de configuration, mais cela vous permet également d'écrire des tests pour différents scénarios de configuration.
la source
Si vous avez une solution qui contient par exemple une application Web et un projet de test, vous souhaiterez probablement que Test Project utilise le web.config de l'application Web.
Une façon de le résoudre consiste à copier web.config pour tester le projet et à le renommer en app.config.
Une autre et meilleure solution consiste à modifier la chaîne de construction et à en faire une copie automatique de web.config pour tester le répertoire de sortie des projets. Pour ce faire, cliquez avec le bouton droit sur Test Application et sélectionnez les propriétés. Vous devriez maintenant voir les propriétés du projet. Cliquez sur "Build Events", puis sur le bouton "Edit Post-build ...". Écrivez la ligne suivante à cet endroit:
Et cliquez sur OK. (Notez que vous devez probablement changer WebApplication1 lorsque vous nom de projet que vous souhaitez tester). Si vous avez un chemin incorrect vers web.config, la copie échoue et vous le remarquerez lors de la construction infructueuse.
Éditer:
Pour copier du projet en cours vers le projet de test:
la source
.config
fichiers. Merci d'avoir partagé! :)web.config
n'a que des références à des.config
fichiers externes au sein d'un même projet. Comme le chemin ne peut pointer que vers des dossiers dans le même répertoire (ce qui est normalement vrai), lors de l'exécution de tests, il ne pourra pas gérer ces fichiers externes. Une idée de comment le résoudre?C'est un peu vieux mais j'ai trouvé une meilleure solution pour cela. J'essayais la réponse choisie ici mais il semble que .testrunconfig soit déjà obsolète.
1. Pour les tests unitaires, envelopper la configuration est une interface (IConfig)
pour les tests unitaires, la configuration ne devrait vraiment pas faire partie de vos tests, alors créez une maquette que vous pouvez injecter. Dans cet exemple, j'utilisais Moq.
2. Pour le test d'intégration, ajoutez dynamiquement la configuration dont vous avez besoin
la source
C'est très simple.
la source
Si vous utilisez NUnit, jetez un œil à cet article . Fondamentalement, vous devrez avoir votre app.config dans le même répertoire que votre fichier .nunit.
la source
Si votre application utilise un paramètre tel que Asp.net ConnectionString, vous devez ajouter l'attribut HostType à votre méthode, sinon ils ne se chargeront pas même si vous avez un fichier App.Config.
la source
J'utilise NUnit et dans mon répertoire de projet j'ai une copie de mon App.Config que je change une configuration (exemple je redirige vers une base de données de test ...). Vous devez l'avoir dans le même répertoire du projet testé et tout ira bien.
la source
Je n'ai pu obtenir aucune de ces suggestions pour fonctionner avec nUnit 2.5.10, j'ai donc fini par utiliser la fonctionnalité Project -> Edit de nUnit pour spécifier le fichier de configuration à cibler (comme d'autres l'ont dit, il doit être dans le même dossier que le. nunit lui-même). Le côté positif de ceci est que je peux donner au fichier de configuration un nom Test.config qui rend beaucoup plus clair ce que c'est et pourquoi)
la source
Vos tests unitaires sont considérés comme un environnement qui exécute votre code pour le tester. Tout comme n'importe quel environnement normal, vous avez ie staging / production. Vous devrez peut-être également ajouter un
.config
fichier pour votre projet de test. Une solution de contournement consiste à créer une bibliothèque de classes et à la convertir en projet de test en ajoutant les packages NuGet nécessaires tels que NUnit et NUnit Adapter. cela fonctionne parfaitement avec Visual Studio Test Runner et Resharper et vous avez votreapp.config
fichier dans votre projet de test.Et finalement débogué mon test et la valeur de
App.config
:la source