Tôi thường xuyên gặp sự cố này và tôi không chắc chắn cách vượt qua rào cản này. Tôi thực sự muốn bắt đầu học và áp dụng Test-Driven-Development (hoặc BDD, hoặc bất cứ điều gì) nhưng có vẻ như mọi ứng dụng tôi làm ở nơi tôi muốn áp dụng là nó chỉ có khá nhiều cơ sở dữ liệu chuẩn CRUD, và tôi không chắc để đi về việc áp dụng nó. Các đối tượng khá nhiều không làm bất cứ điều gì ngoài việc được tiếp tục tồn tại trong cơ sở dữ liệu; không có logic phức tạp nào cần được kiểm tra. Có một cổng mà cuối cùng tôi sẽ cần phải thử nghiệm cho một dịch vụ của bên thứ ba, nhưng tôi muốn có được cốt lõi của ứng dụng được thực hiện trước tiên. Bất cứ khi nào tôi cố gắng viết các bài kiểm tra, tôi chỉ kết thúc thử nghiệm những nội dung cơ bản mà tôi có lẽ không nên thử nghiệm ngay từ đầu (ví dụ: getters/setters) nhưng không giống như các đối tượng có bất kỳ thứ gì khác. Tôi đoán tôi có thể kiểm tra sự kiên trì nhưng điều này dường như không đúng với tôi bởi vì bạn không phải thực sự nhấn vào một cơ sở dữ liệu, nhưng nếu bạn giả sử nó thì bạn thực sự không kiểm tra bất cứ điều gì bởi vì bạn kiểm soát dữ liệu đang nhổ; như tôi đã thấy rất nhiều ví dụ trong đó có kho lưu trữ mô phỏng một cơ sở dữ liệu bằng cách lặp và tạo danh sách các giá trị đã biết và kiểm tra xác minh rằng "kho lưu trữ" có thể lấy lại một giá trị nhất định ... không nhìn thấy điểm của một thử nghiệm như thế này bởi vì tất nhiên "kho lưu trữ" sẽ trả lại giá trị đó; nó được mã hóa cứng trong lớp! Vâng, tôi thấy nó từ quan điểm TDD thuần túy (nghĩa là bạn cần phải có một bài kiểm tra nói rằng kho lưu trữ của bạn cần một phương thức GetCustomerByName hoặc bất cứ điều gì trước khi bạn có thể viết chính phương thức đó), nhưng điều đó có vẻ giống như giáo điều sau đây. cách "- thử nghiệm dường như không làm bất cứ điều gì hữu ích ngoài việc biện minh cho một phương pháp.Áp dụng TDD khi ứng dụng là 100% CRUD
Tôi có nghĩ về điều này sai không?
Ví dụ, hãy chạy ứng dụng quản lý liên hệ của nhà máy. Chúng tôi có các liên hệ và giả sử chúng tôi có thể gửi tin nhắn đến các liên hệ. Do đó, chúng tôi có hai thực thể: Contact
và Message
, mỗi thuộc tính chung (ví dụ: Tên, Họ, Email liên hệ và Chủ đề và Nội dung và Ngày cho thư). Nếu cả hai đối tượng này không có bất kỳ hành vi thực sự nào hoặc cần thực hiện bất kỳ logic nào, thì làm thế nào để bạn áp dụng TDD khi thiết kế một ứng dụng như thế này? Mục đích duy nhất của ứng dụng về cơ bản là kéo danh sách địa chỉ liên hệ và hiển thị chúng trên một trang, hiển thị biểu mẫu để gửi tin nhắn và các nội dung tương tự. Tôi không thấy bất kỳ bài kiểm tra hữu ích nào ở đây - tôi có thể nghĩ về một số bài kiểm tra nhưng họ sẽ kiểm tra khá nhiều vì mục đích nói "Xem, tôi có bài kiểm tra!" thay vì thực sự thử nghiệm một số loại logic (Trong khi Ruby on Rails sử dụng tốt nó, tôi không thực sự xem xét kiểm tra xác nhận là một thử nghiệm "hữu ích" vì nó phải là thứ mà khung công tác chăm sóc cho bạn)
Tôi chỉ cần nói ... I * love * tựa đề này câu hỏi. – Shog9
Đây là một câu hỏi rất hay. Tôi tin rằng hầu hết thời gian khi chúng tôi nghe những lý lẽ về biện minh chi phí của TDD, họ thực sự nói chuyện cụ thể về ứng dụng giống như CRUD. – Sake
Đó là những gì tôi đã nhận thấy là tốt.Tôi muốn * để sử dụng TDD (cũng không nhất thiết phải TDD, nhưng thử nghiệm) nhưng tôi không bao giờ có thể nghĩ về những gì để kiểm tra khi ứng dụng chỉ cần để kéo dữ liệu - Tôi đã nhận được một số trả lời tuyệt vời ở đây, mặc dù. –