views:

673

answers:

1

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.

+3  A: 

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.

devlife
Exactly. See more at http://stackoverflow.com/questions/666898/nunit-not-picking-up-app-settings/3608544#3608544
abatishchev