Bạn có một lớp X và bạn viết một số bài kiểm tra đơn vị xác minh hành vi X1. Ngoài ra còn có lớp A lấy X làm phụ thuộc.
Khi bạn viết bài kiểm tra đơn vị cho A, bạn giả định X. Nói cách khác, trong khi kiểm tra đơn vị A, bạn đặt (định nghĩa) hành vi của giả của X là X1. Thời gian trôi qua, mọi người sử dụng hệ thống của bạn, cần thay đổi, X phát triển: bạn sửa đổi X để hiển thị hành vi X2. Rõ ràng, các bài kiểm tra đơn vị cho X sẽ thất bại và bạn sẽ cần phải điều chỉnh chúng.
Nhưng với A thì sao? Các thử nghiệm đơn vị cho A sẽ không thất bại khi hành vi của X bị sửa đổi (do chế nhạo X). Làm cách nào để phát hiện kết quả của A sẽ khác khi chạy với X "thực" (đã sửa đổi)?
Tôi đang mong đợi câu trả lời dọc theo dòng chữ: "Đó không phải là mục đích của thử nghiệm đơn vị", nhưng thử nghiệm đơn vị có giá trị gì? Có thực sự chỉ cho bạn biết rằng khi tất cả các bài kiểm tra vượt qua, bạn đã không đưa ra một thay đổi đột phá? Và khi hành vi của một số lớp thay đổi (sẵn sàng hoặc không sẵn lòng), làm thế nào bạn có thể phát hiện (tốt nhất là theo cách tự động) tất cả các hậu quả? Chúng ta không nên tập trung nhiều hơn vào thử nghiệm tích hợp?
X1
bạn đang nói rằng X
thực hiện giao diện X1
. Nếu bạn thay đổi giao diện X1
thành X2
giả mà bạn đã sử dụng trong các thử nghiệm khác thì không nên biên dịch nữa, do đó bạn cũng buộc phải sửa các thử nghiệm đó. Thay đổi trong hành vi lớp học không nên quan trọng. Trong thực tế, lớp của bạn A
không nên phụ thuộc vào chi tiết triển khai (đó là những gì bạn sẽ thay đổi trong trường hợp đó). Vì vậy, các bài kiểm tra đơn vị A
vẫn đúng và chúng cho bạn biết rằng A
các công việc được đưa ra thực hiện lý tưởng của giao diện.