Không ai trong số những điều làm cho mã untestable. Họ có thể làm cho việc tìm ra lỗi trường hợp khó hơn nhưng với điều kiện bạn đã chỉ định đầy đủ các tiêu chí thành công để thử nghiệm (và phát triển theo hướng kiểm tra sẽ giúp giảm bớt điều này), tất cả những gì bạn phải làm là vượt qua các tiêu chí.
TDD có thể áp dụng cho hành vi của các bộ phận cụ thể cũng như dự án nói chung, vì vậy bạn có thể dễ dàng kiểm tra các thành phần rất nhỏ. Nhưng, nó có nghĩa là để kiểm tra kết quả, không phải là các phương tiện thu được kết quả đó.
Cung cấp các bài kiểm tra được thông qua, bạn đã đáp ứng các yêu cầu. Nếu có lỗi sau đó, đây là một vấn đề với các bài kiểm tra, không phải là mã đang được thử nghiệm (trong trường hợp đó các bài kiểm tra nên được sửa đổi để nắm bắt vấn đề không lường trước được trước đây).
Bạn không nên quan tâm (về mặt phân phối chức năng) cho dù có một tuyên bố trong một trong các nhà thầu của bạn. Bạn nên tự hỏi mình yêu cầu nghiệp vụ nào? Tôi mạnh mẽ nghi ngờ khách hàng của bạn sẽ cung cấp một danh sách các yêu cầu bao gồm "thừa kế được giới hạn ở 4 cấp độ". Họ cũng có thể liệt kê "không có lỗi" như một yêu cầu nhưng bạn sẽ phải thương lượng chúng xuống một :-).
Are bất kỳ trong số này không mã có mùi? –