2009-10-27 29 views
5

Tôi đang sử dụng Microsoft Visual Studio 2005 với Thư viện doanh nghiệp 3.1.Sự cố khi đọc chuỗi kết nối từ App.Config khi sử dụng NUnit 2.5.2

Tôi có một lớp truy cập dữ liệu là một dự án thư viện lớp học hình ảnh riêng biệt. Tôi đã viết bài kiểm tra đơn vị trong một thư viện lớp khác và cố gắng để gọi phương thức truy cập dữ liệu, nhưng tôi tiếp tục nhận được

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 

Tôi đoán DatabaseFactory.CreateDatabase() gọi là không thể đọc được App.Config để có được chuỗi kết nối. Dự án Unit Test có App.Config hợp lệ chứa các thiết lập chuỗi kết nối [được thêm bởi tiện ích cấu hình EntLib]. Tôi đã tạo một ứng dụng giao diện điều khiển và thêm cùng một App.Config và nó chạy tốt từ ứng dụng Console. Tôi đang bối rối tại sao nó sẽ không chạy khi chạy từ NUnit GUI Á hậu.

Bất kỳ ý tưởng nào?

Cảm ơn, Matrix M.

Trả lời

8

Vấn đề là NUnit tìm kiếm tập tin cấu hình trong thư mục gốc (vị trí thiết kế thời gian của file config). Tuy nhiên, .net di chuyển và đổi tên các tệp vào thư mục bin. Bạn có thể thay đổi các thiết lập nunit để tìm trong thùng khi thực hiện các kiểm tra.

+0

Chính xác. Xem thêm tại http://stackoverflow.com/questions/666898/nunit-not-picking-up-app-settings/3608544#3608544 – abatishchev

+4

Liên kết bị hỏng. Bất kỳ cơ hội nào câu hỏi đã được đổi tên hoặc xóa? – craastad

18

Bạn cần phải nói cho nunit tên tệp cấu hình. trong nunit gui vào dự án> chỉnh sửa và sau đó thay đổi tên tập tin cấu hình.

Dường như nunit sẽ tìm kiếm namespace.config theo mặc định. (ví dụ: tb.specs.config trong trường hợp của tôi) enter image description here

+0

Tôi muốn thêm rằng tệp bạn nhập vào Tên tệp cấu hình có liên quan đến tệp .nunit. Tôi phải làm ". \ {My project name} \ app.config" để tìm nó. Câu trả lời hay. – BillRob

Các vấn đề liên quan