Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Problem in reading connection string from App.Config when using NUnit 2.5.2

I'm using Microsoft Visual Studio 2005 with Enterprise Library 3.1.

I have a data access layer which is a separate visual studio class library project. I wrote unit tests in a another class library and trying to call the data access method, but I keep getting

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

I guess the DatabaseFactory.CreateDatabase() call is not able to read the App.Config to get the connection string. The Unit Test project has a valid App.Config which contains the connection string settings [added by EntLib config utility]. I created a console application and added the same App.Config and it runs fine from Console application. I'm confused why it would not run when running from NUnit GUI runner.

Any ideas?

Thanks, Matrix M.

like image 549
Tech Matrix Avatar asked Oct 27 '09 20:10

Tech Matrix


People also ask

How to store connection string?

The best way to secure the database connection string is to encrypt the value within the configuration file. The application would then load the encrypted value from the config file, decrypt the value, and then use the decrypted value as the connection string to connect to the database.

Where to store connection string in ASP net?

In ASP.NET Core the configuration system is very flexible, and the connection string could be stored in appsettings. json , an environment variable, the user secret store, or another configuration source.


2 Answers

You need to tell nunit the config file name. in nunit gui go to project > edit and then change the configuration file name.

It seems nunit looks for namespace.config by default. (eg. tb.specs.config in my case) enter image description here

like image 186
skyfoot Avatar answered Oct 08 '22 15:10

skyfoot


The issue is that NUnit look for config files in the root directory (the design-time location of config files). However, .net moves and renames the files into the bin folder. You can change the nunit settings to look in the bin when executing tests.

like image 33
devlife Avatar answered Oct 08 '22 16:10

devlife