5 Stimmen

Problem beim Lesen der Verbindungszeichenfolge aus App.Config bei Verwendung von NUnit 2.5.2

Ich verwende Microsoft Visual Studio 2005 mit Enterprise Library 3.1.

Ich habe eine Datenzugriffsschicht, die eine separate Visual Studio-Klassenbibliothek-Projekt ist. Ich schrieb Unit-Tests in einer anderen Klassenbibliothek und versuche, die Datenzugriffsmethode aufzurufen, aber ich erhalte immer

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 vermute, dass der DatabaseFactory.CreateDatabase()-Aufruf nicht in der Lage ist, die App.Config zu lesen, um die Verbindungszeichenfolge zu erhalten. Das Unit-Test-Projekt hat eine gültige App.Config, die die Einstellungen für die Verbindungszeichenfolge enthält [hinzugefügt von EntLib config utility]. Ich habe eine Konsolenanwendung erstellt und dieselbe App.Config hinzugefügt, und sie läuft problemlos über die Konsolenanwendung. Ich bin verwirrt, warum es nicht laufen würde, wenn es von NUnit GUI runner ausgeführt wird.

Irgendwelche Ideen?

Danke! Matrix M.

19voto

skyfoot Punkte 20503

Sie müssen nunit den Namen der Konfigurationsdatei mitteilen. Gehen Sie in nunit gui zu Projekt > Bearbeiten und ändern Sie dann den Namen der Konfigurationsdatei.

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

0 Stimmen

Ich möchte hinzufügen, dass die Datei, die Sie in den Konfigurationsdateinamen eingeben, relativ zu der .nunit-Datei selbst ist. Ich musste ".\{my project name}" eingeben. \app.config ", um es zu finden. Tolle Antwort.

8voto

devlife Punkte 14317

Das Problem ist, dass NUnit nach Konfigurationsdateien im Root-Verzeichnis sucht (dem Speicherort der Konfigurationsdateien zur Entwurfszeit). .net verschiebt und benennt die Dateien jedoch in den bin-Ordner um. Sie können die Nunit-Einstellungen so ändern, dass bei der Ausführung von Tests im bin-Verzeichnis gesucht wird.

0 Stimmen

Ganz genau. Mehr sehen unter stackoverflow.com/questions/666898/

4 Stimmen

Der Link ist defekt. Wurde die Frage vielleicht umbenannt oder gelöscht?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X