2008-11-21 52 views
11

Tôi mới đến thử nghiệm đơn vị. Nhưng làm cách nào để đơn vị kiểm tra DAL của tôi được viết bằng Entity Framework, vì vậy tôi có thể đảm bảo mã DAL của tôi hoạt động chính xác nhưng không có cơ sở dữ liệu nào thực sự được chạm vào? Ai đó có thể cung cấp càng nhiều chi tiết càng tốt.Làm thế nào để đơn vị chính xác kiểm tra DAL của tôi?

Trả lời

15

Nếu bạn muốn kiểm tra xem lớp truy cập dữ liệu của bạn có hoạt động chính xác không, bạn thực sự cần kiểm tra nó với cơ sở dữ liệu tại một số điểm nếu không bạn không thực sự thử nghiệm nó hoạt động.

+0

+1 Và nếu cơ sở dữ liệu thử nghiệm không tồn tại, bạn nên tạo một cơ sở dữ liệu (có vẻ như OP quan tâm đến các cập nhật dữ liệu). –

+1

Vai trò của chế nhạo là gì, ai đó có thể giải thích việc sử dụng điều đó so với vai trò của một cơ sở dữ liệu thử nghiệm? –

+2

Một cơ sở dữ liệu thử nghiệm sẽ là những gì bạn sẽ chạy thử nghiệm tích hợp của bạn chống lại (các bài kiểm tra DAL của bạn). Mocking sẽ được sử dụng để thay thế DAL của bạn cho các bài kiểm tra đơn vị để bạn chỉ kiểm tra logic thực sự nhấn cơ sở dữ liệu (ví dụ: Bạn đảm bảo mã của bạn gọi đúng DAL của bạn bằng cách cung cấp mô hình). – Todd

4

Khi tôi kiểm tra đơn vị DAL của mình, tôi sử dụng các giao dịch và quay lại vào cuối kiểm tra đơn vị, do đó, db sẽ sạch.

+0

thú vị, không bao giờ nghĩ về điều đó, tôi chắc chắn tôi có thể google nó nhưng bạn có một đoạn mã về cách bạn làm điều đó? –

+0

Tuy nhiên, đây không phải là bài kiểm tra đơn vị, nhưng là một bài kiểm tra tích hợp, điều này là tốt. Nhiều khung công tác có các bài kiểm tra tích hợp của họ trỏ đến một cơ sở dữ liệu thử nghiệm riêng biệt, với các giao dịch tự động trên mỗi bài kiểm tra riêng lẻ. –

+0

NUnit có thực hiện tự động chuyển đổi này khi thử nghiệm không? Nếu vậy làm thế nào để tôi cấu hình nó để làm điều đó? –

4

Kiểm tra đơn vị một DAL là một nhức đầu rất phổ biến trong quá trình phát triển. Đối với hầu hết các phần, tôi đề nghị bạn bỏ qua nó.

Hầu hết các ORM ngày này cung cấp một số loại ngôn ngữ truy vấn, có thể là LINQ hoặc HQL hoặc một số hương vị khác. Bởi vì một bài kiểm tra đơn vị thích hợp yêu cầu bạn không thực sự nhấn cơ sở dữ liệu, bạn phải thử ORM và làm điều đó là nỗi đau lớn nhất trong ass bạn có thể nghĩ đến. Nó không đáng, IMO. Cuối cùng, bạn chỉ kết thúc thử nghiệm mà bạn đã viết truy vấn thích hợp trong mã của bạn; bạn không nhận được giá trị hồi quy nào cả và có thể phục vụ tốt hơn mục đích của bạn bằng cách kiểm tra mã.

Tôi không nói bạn không nên kiểm tra việc sử dụng DAL, tuy nhiên; chỉ cần không thử kiểm tra đơn vị. Bạn vẫn nên có một bộ tích hợp và kiểm tra chấp nhận người dùng cho chương trình/hệ thống của bạn; hãy để những người xử lý đó kiểm tra quyền truy cập dữ liệu của bạn.

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