2009-10-27 13 views
5

Używam programu Microsoft Visual Studio 2005 z biblioteką Enterprise 3.1.Problem z odczytaniem ciągu połączenia z App.Config podczas korzystania z NUnit 2.5.2

Mam warstwę dostępu do danych, która jest oddzielnym projektem biblioteki klas studyjnych. Pisałem testy jednostkowe w innej bibliotece klasy i próbuje wywołać metodę dostępu do danych, ale wciąż otrzymuję

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 

Chyba DatabaseFactory.CreateDatabase() wywołanie nie jest w stanie odczytać app.config, aby uzyskać ciąg połączenia. Projekt testu jednostkowego ma poprawny App.Config, który zawiera ustawienia ciągu połączenia [dodane przez narzędzie konfiguracyjne EntLib]. Stworzyłem aplikację konsolową i dodałem ten sam App.Config i działa dobrze z aplikacji Console. Jestem zdezorientowany, dlaczego nie uruchomi się podczas uruchamiania z NUnit GUI runner.

Wszelkie pomysły?

Dzięki Matrix M.

Odpowiedz

8

Problem jest, że NUnit szukać plików konfiguracyjnych w katalogu głównym (lokalizacja czasie projektowania plików konfiguracyjnych). Jednak .net przenosi i zmienia nazwy plików w folderze bin. Możesz zmienić ustawienia nunit, aby przejrzeć zawartość pojemnika podczas wykonywania testów.

+0

Dokładnie. Zobacz więcej na http://stackoverflow.com/questions/666898/nunit-not-picking-up-app-settings/3608544#3608544 – abatishchev

+4

Link jest uszkodzony. Czy była szansa, że ​​pytanie zostało zmienione lub usunięte? – craastad

18

Musisz podać nunit nazwę pliku konfiguracyjnego. w nunit gui przejdź do projektu> edytuj, a następnie zmień nazwę pliku konfiguracyjnego.

Wygląda na to, że nunit domyślnie szuka namespace.config. (np. tb.specs.config w moim przypadku) enter image description here

+0

Chcę dodać, że plik wprowadzany w nazwie pliku konfiguracyjnego jest związany z samym plikiem .nunit. Musiałem zrobić ". \ {Moja nazwa projektu} \ app.config", aby go znaleźć. Świetna odpowiedź. – BillRob

Powiązane problemy