Chúng tôi có một Visual Studio 2012 dự án ASP.NET MVC sử dụng Entity Framework 5.Làm thế nào để thiết lập LocalDb cho unit tests trong Visual Studio 2012 và Entity Framework 5
Có một số xét nghiệm đơn vị đó phụ thuộc vào một cơ sở dữ liệu. Thiết lập tệp app.config trong dự án thử nghiệm để sử dụng cơ sở dữ liệu SQL Server trung tâm hoạt động tốt.
Tuy nhiên, sẽ tốt hơn nếu sử dụng LocalDb, để mỗi nhà phát triển có cơ sở dữ liệu riêng của mình khi chạy thử nghiệm. Đặc biệt là kể từ khi chúng tôi muốn có các bài kiểm tra thiết lập để DropCreateDatabaseAlways
khi chạy.
Tuy nhiên, tôi không thể thiết lập để hoạt động. Nếu tôi cố gắng này trong app.config:
<add name="TestDb"
connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=unittestdb;
Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\unittestdb.mdf"
providerName="System.Data.SqlClient" />
tôi nhận được:
System.Data.SqlClient.SqlException: Một lỗi kích hoạt tập tin xảy ra. Tên tệp vật lý '\ unittestdb.mdf' có thể không chính xác. Chẩn đoán và sửa các lỗi bổ sung và thử lại thao tác. CREATE DATABASE không thành công. Một số tên tập tin liệt kê không thể được tạo ra. Kiểm tra lỗi liên quan.
Có vẻ như nó muốn tệp mdf tồn tại, điều này có vẻ lạ vì nó đang cố tạo cơ sở dữ liệu. Tạo tệp mdf theo cách thủ công sẽ không thay đổi thông báo lỗi.
Bạn có thể kiểm tra những giá trị nào bạn có trong đơn vị thử nghiệm khi bạn gọi: 'AppDomain.CurrentDomain.GetData (" DataDirectory ")'? –
Giá trị của 'AppDomain.CurrentDomain.GetData (" DataDirectory ")' trong thử nghiệm đơn vị là 'null'. –
Vì vậy, hoặc đặt giá trị cho một số đường dẫn bằng cách sử dụng 'SetData' hoặc không sử dụng' | DataDirectory | 'trong chuỗi kết nối vì nó là' null'. –