J'essaye de terminer ce gestionnaire d'exceptions:
if (ConfigurationManager.ConnectionStrings["ConnectionString"]==null)
{
string pathOfActiveConfigFile = ...?
throw new ConfigurationErrorsException(
"You either forgot to set the connection string, or " +
"you're using a unit test framework that looks for "+
"the config file in strange places, update this file : "
+ pathOfActiveConfigFile);
}
Ce problème semble ne m'arriver que lorsque j'utilise nUnit.
c#
.net
nunit
app-config
configurationmanager
MatthewMartin
la source
la source
À proprement parler, il n'y a pas de fichier de configuration unique. À l'exclusion d'ASP.NET 1, il peut y avoir trois fichiers de configuration utilisant la prise en charge inbuilt (
System.Configuration
). En plus de la configuration de la machine:,app.exe.config
itinérance utilisateur et utilisateur local.Pour obtenir la configuration "globale" ( exe .config):
Utilisez des
ConfigurationUserLevel
valeurs différentes pour les fichiers de configuration itinérants et non itinérants par utilisation.1 Qui a un modèle complètement différent où le contenu d'un dossier enfant (IIS-virtuel ou système de fichiers)
web.config
peut (selon le paramètre) s'ajouter ou remplacer celui du parentweb.config
.la source
Si vous voulez dire que vous n'obtenez un retour nul que lorsque vous utilisez NUnit, vous devez probablement copier la valeur ConnectionString de votre app.config de votre application dans le app.config de votre bibliothèque de test.
Lorsqu'il est exécuté par le chargeur de test, l'assembly de test est chargé au moment de l'exécution et cherchera dans son propre app.config (renommé en testAssembly.dll.config au moment de la compilation) plutôt que dans le fichier de configuration de vos applications.
Pour obtenir l'emplacement de l'assembly que vous exécutez, essayez
la source
Assurez-vous de cliquer sur les propriétés du fichier et de le définir sur "copier toujours", sinon il ne sera pas dans le dossier Debug \ avec votre joyeux lil dll pour configurer où il doit être et ajouter plus de cloche de vache
la source
La première fois que j'ai réalisé que le projet de test unitaire faisait référence à app.config dans ce projet plutôt qu'à app.config associé à mon projet de code de production (bien sûr, DOH), je viens d'ajouter une ligne dans l'événement Post Build du projet Prod qui copiera l'app.config dans le dossier bin du projet de test.
Problème résolu
Je n'ai pas remarqué d'effets secondaires étranges jusqu'à présent, mais je ne suis pas sûr que ce soit la bonne solution, mais au moins cela semble fonctionner.
la source
Une autre option que j'ai vue manque ici:
la source
Selon l'emplacement de votre fichier de configuration, vous
System.Reflection.Assembly.GetExecutingAssembly().Location
pouvez faire ce dont vous avez besoin.la source
J'ai essayé l'une des réponses précédentes dans une application Web (en fait un rôle Web Azure s'exécutant localement) et cela n'a pas tout à fait fonctionné. Cependant, cette approche similaire a fonctionné:
Le fichier de configuration s'est avéré être dans C: \ Program Files \ IIS Express \ MyComponent.dll.config. Endroit intéressant pour cela.
la source