23

Visual studio đã tạo một dự án thử nghiệm đơn vị cho tôi dựa trên phương thức (nhấp chuột phải vào kiểm tra thêm). Khi tôi cố gắng truy cập cơ sở dữ liệu, tôi nhận được một ngoại lệ. Đã chạy mã này để xem kết nối của tôi là gì:Kiểm tra - Chuỗi kết nối bị thiếu

ConnectionStringSettings connStringSettings = ConfigurationManager. 
    ConnectionStrings["myConnectionString"]; 

nhưng, connStringSettings là null. Sau khi kiểm tra, bộ sưu tập ConnectionStrings chỉ có một số. Có vẻ như không được đọc từ web.config của tôi.

DAL của tôi bị cô lập và không thể có chuỗi kết nối được thiết lập thông qua mã. Chuỗi kết nối của nó được đặt trong mã như sau:

set 
{ 
    value = System.Configuration.ConfigurationManager. 
     ConnectionStrings["myConnectionString"].ConnectionString; 
} 

Làm cách nào để giải quyết vấn đề này?

+0

Nếu bạn đang truy cập cơ sở dữ liệu, bạn không phải là thử nghiệm đơn vị, bạn đang thử nghiệm tích hợp. Đối với một thử nghiệm đơn vị, bạn nên thử lớp truy cập dữ liệu của mình, tại thời điểm đó, khía cạnh chuỗi kết nối không liên quan. –

+0

@DBM - Tốt. Tôi đã cập nhật thẻ và tiêu đề. –

Trả lời

51

Thêm một tệp App.config vào dự án thử nghiệm đơn vị của bạn và sao chép qua chuỗi kết nối từ Web.config.

+1

Đây có phải là giải pháp khả thi duy nhất (đã không tìm thấy bất cứ điều gì để nói khác cho đến nay ... nhưng tôi đã không tìm thấy một toàn bộ anyway). Nếu tôi có thể kết nối chuỗi của mình thì sao? Sau đó tôi phải chắc chắn rằng nó đã thay đổi trong dự án thử nghiệm? – Trent

+0

Yep - xin lỗi, nhưng nếu chuỗi kết nối của bạn đã được tự động bao bọc bởi lớp kiểm tra, bạn không thể làm gì với nó. Nếu có quá tải đối với hàm tạo DAL mà bạn có thể khởi tạo bằng chuỗi kết nối khách hàng, thì bạn có thể đặt chuỗi trong hàm tạo đó. Thật không may, nếu bạn phải thay đổi chuỗi kết nối của bạn, bạn sẽ phải tự làm điều đó trong cả hai dự án. Cuối cùng, mặc dù, câu trả lời cuối cùng là đơn vị kiểm tra thực sự * không nên * được truy cập cơ sở dữ liệu, do đó, chuỗi kết nối về mặt kỹ thuật không cần thiết ở đó cả. – eouw0o83hf

+0

Làm thế nào để bạn kiểm tra truy vấn của bạn đang làm việc sau đó, nếu bạn không có nghĩa là để truy cập vào cơ sở dữ liệu? – Trent

5

Thêm chuỗi kết nối vào tệp app.config của đơn vị thử nghiệm. Dự án thử nghiệm đơn vị sẽ không có quyền truy cập vào cấu hình web của dự án web của bạn.

6

Tuyệt vời điều này đã hiệu quả đối với tôi. Tôi đã thêm tập tin App.config dưới dự án thử nghiệm đơn vị. Nhưng hãy chắc chắn rằng chúng ta shoud theo synatx nếu không nó sẽ ném ngoại lệ.

<connectionStrings> 

    <add name="test" connectionString="" providerName="System.Data.SqlClient" /> 

    <add name="db" connectionString=""" providerName="System.Data.SqlClient"/> 

</connectionStrings> 

-3

Một giải pháp khác là để đi đến các trang bất động sản giải pháp (solution-> properties)

dự án Startup - kiểm tra các dự án khởi động duy nhất là một với config.

Chọn, ok - xong.

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