2009-10-27 4 views
5

J'utilise Microsoft Visual Studio 2005 avec Enterprise Library 3.1.Problème lors de la lecture de la chaîne de connexion à partir d'App.Config lors de l'utilisation de NUnit 2.5.2

J'ai une couche d'accès aux données qui est un projet distinct de bibliothèque de classes de studio visuel. J'ai écrit des tests unitaires dans une autre bibliothèque de classes et d'essayer d'appeler la méthode d'accès aux données, mais je continue à obtenir

PSMCP.Dal.Tests.DataManagerTests.GetAAAReturnsDataReader: 
System.NullReferenceException : Object reference not set to an instance of an object. 

at Microsoft.Practices.EnterpriseLibrary.Data.DatabaseMapper.MapName(String name, IConfigurationSource configSource) 
at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder.ConfigurationNameMappingStrategy.BuildUp(IBuilderContext context, Type t, Object existing, String id) 
at Microsoft.Practices.ObjectBuilder.BuilderBase`1.DoBuildUp(IReadWriteLocator locator, Type typeToBuild, String idToBuild, Object existing, PolicyList[] transientPolicies) 
at Microsoft.Practices.ObjectBuilder.BuilderBase`1.BuildUp(IReadWriteLocator locator, Type typeToBuild, String idToBuild, Object existing, PolicyList[] transientPolicies) 
at Microsoft.Practices.ObjectBuilder.BuilderBase`1.BuildUp[TTypeToBuild](IReadWriteLocator locator, String idToBuild, Object existing, PolicyList[] transientPolicies) 
at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder.EnterpriseLibraryFactory.BuildUp[T](IReadWriteLocator locator, IConfigurationSource configurationSource) 
at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder.EnterpriseLibraryFactory.BuildUp[T](IConfigurationSource configurationSource) 
at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder.NameTypeFactoryBase`1.CreateDefault() 
at Microsoft.Practices.EnterpriseLibrary.Data.DatabaseFactory.CreateDatabase() 
at PSMCP.Dal.PSMCPDataManager.GetAAACall(String searchStr, Int32 filterCategory, Int32 centerId) in C:\Documents and Settings\user1\My Documents\Visual Studio 2005\Projects\Test\AAA.Dal\DataManager.cs:line 61 
at PSMCP.Dal.Tests.DataManagerTests.GetAAAReturnsDataReader() in C:\Documents and Settings\user1\My Documents\Visual Studio 2005\Projects\Test\PSMCP.Dal.Tests\DataManagerTests.cs:line 27 

Je suppose que l'appel DatabaseFactory.CreateDatabase() ne peut pas lire le App.Config pour obtenir le chaîne de connexion. Le projet Unit Test a un fichier App.Config valide qui contient les paramètres de chaîne de connexion [ajoutés par l'utilitaire de configuration EntLib]. J'ai créé une application console et ajouté le même App.Config et il fonctionne bien à partir de l'application Console. Je suis confus pourquoi il ne fonctionnerait pas lors de l'exécution du coureur NUnit GUI.

Des idées?

Merci, Matrice M.

Répondre

8

Le problème est que NUnit rechercher les fichiers de configuration dans le répertoire racine (l'emplacement en temps de conception des fichiers de configuration). Cependant, .net déplace et renomme les fichiers dans le dossier bin. Vous pouvez changer les paramètres de nunit pour les regarder dans la corbeille lors de l'exécution des tests.

+0

Exactement. Voir plus à http://stackoverflow.com/questions/666898/nunit-not-picking-up-app-settings/3608544#3608544 – abatishchev

+4

Lien est cassé. Y a-t-il une chance que la question ait été renommée ou supprimée? – craastad

18

Vous devez indiquer à nunit le nom du fichier de configuration. dans nunit gui, allez dans le projet> éditer puis changez le nom du fichier de configuration.

Il semble que nunit cherche namespace.config par défaut. (par exemple, tb.specs.config dans mon cas) enter image description here

+0

Je souhaite ajouter que le fichier que vous entrez dans le Nom du fichier de configuration est relatif au fichier .nunit lui-même. J'ai dû faire ". \ {Mon nom de projet} \ app.config" pour l'obtenir pour le trouver. Bonne réponse. – BillRob

Questions connexes