Làm thế nào tôi sẽ đơn vị kiểm tra logic cơ sở dữ liệu?


12

Tôi vẫn gặp vấn đề khi vượt qua một vấn đề nhỏ khi nói đến TDD.

Tôi cần một phương thức sẽ nhận được một tập hợp dữ liệu được lọc nhất định từ lớp dữ liệu (linq2Query). Xin lưu ý rằng tôi đang sử dụng các lớp được tạo linq từ đó được tạo từ DBML. Bây giờ vấn đề là tôi muốn viết một bài kiểm tra cho việc này.

tôi có

a) đầu tiên chèn các bản ghi trong kiểm tra và sau đó thực hiện phương pháp và kiểm tra kết quả

b) sử dụng dữ liệu có thể có trong cơ sở dữ liệu. Không quan tâm đến logic này vì nó có thể khiến mọi thứ bị phá vỡ.

c) những gì bạn từng đề nghị?

Câu trả lời:


7

Biến thiên trên (a).

Có một db kiểm tra hoặc phần phụ của db có thể được sử dụng để kiểm tra. Khi bạn đang thiết lập các thử nghiệm của mình, hãy có một thói quen khởi tạo DB khi bạn cần nó để bắt đầu thử nghiệm (điều này có thể được thực hiện trước mỗi thử nghiệm, nếu phù hợp). Điều này có thể bao gồm xóa dữ liệu, chèn dữ liệu, vv Sau đó chạy thử nghiệm của bạn. Trong giai đoạn Teardown, hãy dọn dẹp sau khi chính mình. Có thể được lặp đi lặp lại nhiều như cần thiết, mà không có nguy cơ làm gián đoạn hệ thống trực tiếp (không phải là một ý tưởng tốt để kiểm tra bằng cách sử dụng dữ liệu trong cơ sở dữ liệu cần thiết cho bất cứ điều gì khác).


1
Câu trả lời tốt. Tôi thích tạo cơ sở dữ liệu vứt đi bằng sqlite. Điều đó là không thể nếu bạn muốn kiểm tra những thứ dành riêng cho việc triển khai cơ sở dữ liệu (ví dụ như trình kích hoạt), nhưng nó cho phép thiết lập / phá hỏng nhanh chóng và vô hại.
bogeymin

1
@bogeymin - bạn vẫn có thể thiết lập DB thử nghiệm với các kích hoạt nếu bạn muốn (bạn có thể tạo toàn bộ db bằng một tập lệnh trong Fixturesetup)
Yaakov Ellis
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.