2009-10-27 4 views
5

Ich verwende Microsoft Visual Studio 2005 mit Enterprise Library 3.1.Problem beim Lesen der Verbindungszeichenfolge von App.Config bei Verwendung von NUnit 2.5.2

Ich habe eine Datenzugriffsebene, die ein separates Visual Studio Klassenbibliothek Projekt ist. Ich schrieb Unit-Tests in einer anderen Klasse Bibliothek und versuchen, die Datenzugriffsmethode zu nennen, aber ich bekomme immer wieder

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 

Ich denke, die DatabaseFactory.CreateDatabase() -Aufruf nicht in der Lage ist, die App.Config zu lesen die bekommen Verbindungszeichenfolge Das Unit Test-Projekt verfügt über eine gültige App.Config, die die Verbindungszeichenfolgeneinstellungen enthält [wurde vom EntLib-Konfigurationsdienstprogramm hinzugefügt]. Ich habe eine Konsolenanwendung erstellt und die gleiche App.Config hinzugefügt, und sie funktioniert problemlos von der Konsolenanwendung. Ich bin verwirrt, warum es nicht laufen würde, wenn es von NUnit GUI Läufer läuft.

Irgendwelche Ideen?

Danke, Matrix M.

Antwort

8

Das Problem ist, dass NUnit im Stammverzeichnis für Konfigurationsdateien suchen (der Entwurfszeit-Standort von Konfigurationsdateien). Allerdings verschiebt .net und benennt die Dateien in den Ordner bin. Sie können die Nunit-Einstellungen so ändern, dass sie beim Ausführen von Tests in der Bin angezeigt werden.

+0

Genau. Weitere Informationen finden Sie unter http://stackoverflow.com/questions/666898/nunit-not-picking-up-app-settings/3608544#3608544 – abatishchev

+4

Link ist kaputt. Gibt es eine Chance, dass die Frage umbenannt oder gelöscht wurde? – craastad

18

Sie müssen nunit den Namen der Konfigurationsdatei mitteilen. in Nunit GUI gehen Sie zu Projekt> Bearbeiten und ändern Sie den Namen der Konfigurationsdatei.

Es scheint, dass nunit standardmäßig nach namespace.config sucht. (zB tb.specs.config in meinem Fall) enter image description here

+0

Ich möchte hinzufügen, dass die Datei, die Sie in den Konfigurationsdateinamen eingeben relativ zur .nunit-Datei selbst ist. Ich musste ". \ {Mein Projektname} \ app.config" tun, um es zu finden. Große Antwort. – BillRob

Verwandte Themen