Khi kiểm tra đơn vị, phải sử dụng cơ sở dữ liệu khi thử nghiệm các hoạt động CRUD?
Giả sử một lúc bạn đã trích xuất các giao diện tròn cho biết các hoạt động CRUD và đã kiểm tra mọi thứ sử dụng giao diện được nói thông qua mocks hoặc sơ khai. Bây giờ bạn còn lại với một đoạn mã là một phương thức lưu chứa một chút mã để ràng buộc các đối tượng và một số SQL.
Nếu vậy thì tôi sẽ tuyên bố rằng một "Đơn vị" và nói rằng bạn cần một cơ sở dữ liệu, và lý tưởng một trong đó là ít nhất một đại diện tốt cho cơ sở dữ liệu của bạn, kẻo bạn bị bắt ra với SQL cụ thể vender.
Tôi cũng sẽ sử dụng ánh sáng các mocks để điều chỉnh các điều kiện lỗi, nhưng tôi sẽ không tự kiểm tra phương pháp lưu chỉ với mocks. Vì vậy, trong khi kỹ thuật này có thể là một thử nghiệm tích hợp tôi vẫn sẽ làm điều đó như là một phần của bài kiểm tra đơn vị của tôi.
Chỉnh sửa: Đã bỏ lỡ 2/3 câu hỏi của bạn. Lấy làm tiếc.
Trợ giúp có thể giúp bạn thực hiện điều này?
Tôi đã từng sử dụng trong cơ sở dữ liệu bộ nhớ và đã bị cắn hoặc là cơ sở dữ liệu tôi đã sử dụng và hệ thống trực tiếp đã làm một việc khác hoặc mất một thời gian để khởi động. Tôi sẽ khuyên mọi nhà phát triển đều có cơ sở dữ liệu cục bộ của nhà phát triển.
Bạn có phải tạo lại db bằng cách nào đó trong bộ nhớ không?
Trong cơ sở dữ liệu có. Tôi sử dụng DbUnit để chia nhỏ dữ liệu và theo cách thủ công giữ lược đồ cập nhật với các tập lệnh SQL nhưng bạn có thể chỉ sử dụng các tập lệnh SQL. Có một cơ sở dữ liệu cục bộ phát triển thêm một số bảo trì bổ sung khi bạn có cả lược đồ và bộ dữ liệu để theo kịp dữ liệu nhưng cá nhân tôi thấy có giá trị trong khi bạn có thể chắc chắn rằng lớp cơ sở dữ liệu đang hoạt động như mong đợi.
Nguồn
2009-09-28 10:39:13
Hãy thừa nhận rằng nó thực sự là một thử nghiệm tích hợp, có một số giá trị trong việc giả mạo một cơ sở dữ liệu để thực hiện các bài kiểm tra đơn vị không? –
Vâng. Nó sẽ giúp bạn đơn vị kiểm tra kho dữ liệu của bạn, sử dụng DAL (trong trường hợp này là những người giả mạo). –
-1. Tôi nghĩ rằng câu trả lời của Mark chính xác hơn: Nó phụ thuộc vì nếu bạn đang viết mã mà vẫn tồn tại dữ liệu thay mặt cho mã khác (n-tier, thư viện khung, v.v.), thì kiểm thử đơn vị chính xác là, thử nghiệm một đơn vị cụ thể mã hoạt động như mong đợi. Ví dụ: giả sử bạn sử dụng cột IDENTITY trong DB của mình và trả lại ID đã tạo dưới dạng truy vấn SELECT sau INSERT, mã này phải được kiểm tra đơn vị tức là xác nhận giá trị trả về là ID dự kiến. Đồng ý rằng việc tạo kho lưu trữ giả là tốt, nhưng có một số điều bạn không thể bỏ qua. – si618