Test: je *veux* pour tester web.config

J'ai envie de faire quelques tests unitaires sur un de mes projets. C'est un projet web, et il n'y aura qu' un copie de ce programme en cours d'exécution à part le développement d'exemplaires.

Je veux écrire des tests unitaires qui va utiliser le web.config. Je comprends que, normalement, un testeur aurait talon de cette dépendance externe parce qu'il veut tester le code sans le test en fonction de la web.config la tenue de certaines valeurs.

Cependant, la web.config dans mon projet est censé toujours croire en certaines valeurs et je veux avoir un test unitaire qui échoueront si elles sont fixées à des valeurs non valides. Par exemple, l'une des valeurs est une chaîne de connexion SQL.

Je veux écrire un test qui permettra de lire la chaîne de connexion à partir de la web.config. J'imagine que le test peut se connecter à un serveur avec la chaîne de connexion et peut-être effectuer une commande très simple comme SELECT system_user;. Si la commande s'exécute correctement et renvoie quelque chose que le test passe. Sinon, il échoue. Je veux la chaîne de connexion pour être lu à partir de la web.config dans le projet que je suis en essais.

Bien sûr, la ConfigurationManager ne sera pas ordinairement recherchez un web.config dans un autre projet. J'ai pu copier manuellement le web.config du projet d'origine pour le projet de test, mais je dois le faire avant chaque test et il n'y a pas moyen que je pouvais compter sur personne d'autre pour le faire.

Comment puis-je faire mon projet de test lire le web.config à partir d'un autre projet?

Il ya une meilleure façon que de copier la config pour le projet de test, goto ajouter un élément existant et sélectionnez le web.config au lieu de cliquer sur le bouton ajouter, cliquez sur la flèche à côté de lui et de choisir comme un lien. Maintenant, votre projet de test a le live de la copie du site web.config comme un lien symbolique.
Chris, j'ai essayé ta suggestion et juste comme je le soupçonnais, il fait une copie du fichier dans le répertoire pour le projet de test d'unité; c'est ce que je voulais éviter.
Qu'est-ce que la fin de votre jeu ici? "Alors Que..." la partie de votre cas d'utilisation. Vous pouvez mettre beaucoup d'efforts dans les tests de quelque chose qui est completley superflu, car cela ne vous acheter en toute confiance. Le fichier de configuration dynamique de par leur nature même, et la mise à jour, il peut être une exigence à la volée. Cependant, vous les tests échouent maintenant parce qu'ils étaient attend à une certaine valeur. Peut-être si vous pouviez expliquer "Pourquoi" vous faites cela, on pourrait mieux les aider à élaborer un plan pour les tests.
Oui, Josh, le web.config fichier est dynamique. Cependant, il n'y aura qu'une seule instance de cette application en cours d'exécution dans la production. Je souhaite avoir un test unitaire qui récupère une chaîne de connexion à partir de la web.config et vérifie qu'il est valide. Oui, le web.config est techniquement dynamique, mais dans la pratique, il ne sera pas changer une fois qu'il est déployé.
Il n'est pas de faire une copie de la config, il crée un lien symbolique. Cela signifie que votre projet voit le fichier exactement comme si elle était là, mais il n'existe pas physiquement dans le projet. (il n'est toutefois devenu copié dans le répertoire de construction lors de la compilation)

OriginalL'auteur Daniel Allen Langdon | 2010-03-05