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?
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
Vous devez vous connecter pour publier un commentaire.
Il semble que vous essayez de valider les paramètres dans le web.config, qui est un déploiement au niveau de préoccupation et est différent de tests unitaires.
Tests unitaires vous dit que votre logique de base fonctionne comme prévu; déploiement de vérification vous indique que l'application a été installé et configuré correctement et qu'il est sûr à utiliser. Les tests unitaires sont significatives pour les développeurs, le déploiement de vérification est significatif pour l'utilisateur final ou de l'administrateur qui est le déploiement de l'application.
Dans ce genre de situation, j'aime construire un "système de la console" dans mes applications. Cette console contient un certain nombre d'auto-diagnostic des contrôles tels que:
Je recommande fortement que vous envisager de séparer ce genre de configuration et de déploiement de la vérification de vos tests unitaires. Non seulement il va simplifier votre travail (parce que vous n'aurez pas ont pour charger un fichier de configuration à partir d'un autre projet), mais c'est aussi le genre d'outil que les clients vraiment, vraiment 🙂
web.config
est tout autant une partie du projet, comme l'un de ses fichiers de code. C'est pourquoi je tiens à être en mesure de tester avec une chaîne de connexion (extrait deweb.config
, comme si il ont été récupérés au moment de l'exécution.Star: je l'ai fait pour un certain nombre de "déploiement" des sites. Mon point est qu'il n'a pas d'importance combien de déploiements il y a, à la validation de la configuration de déploiement est quelque chose qui devrait être fait depuis que le déploiement du point de vue. Si vous n'êtes PAS d'essayer de valider le déploiement, mais au lieu de cela veux juste utiliser le web.config de la chaîne de connexion dans vos tests, pourriez-vous utiliser un post-script de build ou quelque chose qui fera la mise à jour de votre projet de test de l'application.config à chaque fois que le site web est reconstruit?
J'ai pensé à écrire un fichier de commandes pour copier
web.config
pour le projet de test, mais je me rends compte qu'il y a ensuite la question d'avoir le vérifier sur le web.config dans le projet de test avant de lancer les tests... je peut regarder dans cette. Mon directeur de thèse, les désirs de ce test de l'unité, en partie parce que c'est facile pour exécuter les tests dans le cadre d'un build. De cette façon, nous voudrions savoir quand les nightly build exécute que quelqu'un a créé une défaillance de la chaîne de connexion dans le web.configJe ne serais pas d'accord avec ça. La plupart des sur le web.paramètres de configuration peut être définie dans le code au lieu de config comme ils changent rarement. Le seul but de les laisser dans le web.la config est la lisibilité du projet. De ce point de vue portions de web.config sont l'équivalent de code. Ainsi, ils doivent être testés.
OriginalL'auteur Seth Petry-Johnson
Vous pouvez charger et d'explorer d'autres fichiers de configuration avec le ConfigurationManager.OpenXXX() méthodes.
La
WebConfigurationManager
classe a spécifiquement une méthode pour l'ouverture du web.les fichiers de configuration, et la page de documentation j'ai relié à plus d'exemples de code. Une fois que vous avez votre objet de configuration chargé, vous pouvez l'explorer pour les sections et les touches.web.config
. Elle lève une exception si j'essaie d'utiliser un chemin relatifOriginalL'auteur womp
J'ai posé une question similaire que vous pourriez vouloir vérifier:
Comment puis-je tester que tous mes prévu web.paramètres de configuration ont été définis?
J'ai fini par la faire fonctionner mais l'ennuyeux partie est ma source de contrôle constamment le verrouillage du fichier de configuration qui est copié. Vous pouvez également renommer le web.config app.config pour qu'il compile dans un non-projet web.
OriginalL'auteur Kelsey
Il semble que vous essayez de l'écraser un moustique avec un marteau de forgeron. Pourquoi ne pas le faire manuellement, en tant que partie de la liste de contrôle de déploiement; avoir une tâche de confirmer manuellement la propriété connectionString.
Ou si vous souhaitez automatiser l', écrire un programme pour vérifier la connectionString, de le connecter à votre serveur d'Intégration Continue (en supposant que vous en avez un) et échouer la compilation si la connectionString est faux.
Utilisation des Tests Unitaires pour ce qu'ils sont destinés à des tests de code, pas de configuration.
OriginalL'auteur Gavin Miller
Si vous souhaitez utiliser le site web d'origine.fichier de configuration de votre site web pour vos Tests Unitaires projet sans la copier ensuite, vous pouvez Modifier VS Local-Test-Paramètres.
Ici est une procédure étape par étape pour l'utilisation ASP.net site fichier de configuration en vertu de Tests Unitaires projet. Suivez le lien http://forums.asp.net/t/1454799.aspx/1
OriginalL'auteur Nishant Kumar
Il est un outil commercial appelé
CheckMyConfig
pour la validation de.NET
fichiers de configuration, qui permet d'identifier les paramètres dans un fichier de config, et tente de les valider.De réglage Possible des différents types de base de données de chaînes de connexion, les fichiers, les dossiers, les adresses IP, les noms d'hôtes et adresses Url.
L'outil vous permet d'effectuer un certain nombre de contrôles, y compris l'ouverture de connexions de base de données, l'accès à des dossiers, la demande d'une URL particulière, etc.
Il y a une version autonome, mais l'outil a aussi l'intégration à Visual Studio et une API simple que vous pouvez utiliser pour intégrer l'outil dans vos propres applications, afin
pour effectuer une config
'sanity check'
à l'application du temps de démarrage.OriginalL'auteur fawltster
Dans vos tests unitaires projet, ajouter une application.le fichier de configuration et ajouter les paramètres à partir du web.fichier de configuration que vous souhaitez utiliser pour vos tests.
OriginalL'auteur bkaid