Trong nhóm sản phẩm của chúng tôi, chúng tôi nhắm mục tiêu bảo hiểm mã 50-70% từ các thử nghiệm đơn vị và 90% + bảo hiểm từ các thử nghiệm đơn vị và tự động hóa thử nghiệm kết hợp. Thời gian thông thường được ngân sách cho các bài kiểm tra đơn vị viết là khoảng 1 ngày cho mỗi tính năng mất 3-4 ngày để mã hóa. Nhưng điều đó có thể thay đổi với rất nhiều yếu tố.
Bảo hiểm mã 99% là tuyệt vời. Bài kiểm tra đơn vị là tuyệt vời. Nhưng bảo hiểm mã 99% chỉ từ thử nghiệm đơn vị? Tôi thấy rằng thật khó để tin rằng bạn có thể nhận được nhiều bảo hiểm như vậy chỉ từ thử nghiệm đơn vị .
Đối với trường hợp bạn đã dành 3 ngày để viết bài kiểm tra cho một lớp mà nếu không thì mất 1 ngày để thực hiện. Bạn đã không giải thích lý do tại sao phải mất nhiều thời gian này hoặc chia sẻ bất kỳ mã nào. Từ suy đoán, tôi đoán bạn không thực sự viết một bài kiểm tra đơn vị thực sự cho lớp của bạn, nhưng thực ra là viết tự động kiểm tra . Và thực tế không có gì sai với điều đó - miễn là bạn nhận ra sự khác biệt giữa hai loại thử nghiệm khác nhau.
Nhưng bạn nói rằng ba ngày viết bài kiểm tra chỉ dành cho một lớp duy nhất. Có lẽ bản thân lớp học không được thiết kế để thử nghiệm đơn vị. Lớp có thực hiện UI không? Mạng? Tập tin I / O? Nếu vậy, có thể bạn đã kết thúc việc viết nhiều mã hơn để kiểm tra thời gian chạy Java hơn là logic nghiệp vụ của bạn tương tác với thời gian chạy.
TDD giúp bạn suy nghĩ về các giao diện và giao diện cho các phụ thuộc. Lớp duy nhất thực hiện UI, mạng và tệp / io cho một tính năng có thể được phân chia tốt hơn thành nhiều lớp - một cho mạng, một cho tệp / io và UI được chia thành thiết kế trình điều khiển trình xem mô hình. Sau đó, bạn có thể thực hiện các thử nghiệm thích hợp cho từng đối tượng với các đối tượng giả đơn giản cho các phụ thuộc. Tất nhiên, tất cả điều này chiếm nhiều thời gian hơn. Vì vậy, thay vì 1 ngày để viết mã và 3 ngày để viết bài kiểm tra, kiểu thiết kế này có thể cần 3 ngày viết mã và 1 ngày viết bài kiểm tra. Nhưng mã sẽ được duy trì tốt hơn và có thể tái sử dụng.