Có bất kỳ ứng dụng nguồn mở nào được phát triển bằng cách sử dụng phát triển theo hướng kiểm tra đóng vai trò là mô hình về cách kiểm thử đơn vị tốt nên hoạt động không?
Tôi muốn xem các ví dụ trong C # và .NET. (Lưu ý rằng tôi đã đề cập đến các ứng dụng, không chỉ các thư viện.)
Tôi là một lập trình viên trung cấp, những người thực sự muốn tin tưởng và thực hành TDD. Ứng dụng tôi làm trong công việc hàng ngày của tôi khá phức tạp - khoảng 1 triệu dòng mã - và tôi rất muốn giới thiệu thêm thử nghiệm đơn vị. Chúng tôi có một số bài kiểm tra đơn vị tại chỗ, nhưng những nỗ lực của tôi tại TDD và với việc làm việc với mã đã được kiểm tra đã không được khuyến khích.
Theo kinh nghiệm hạn chế được thừa nhận của tôi, TDD dường như khuyến khích rất nhiều sự phức tạp trong tên của việc tách rời. Các bit của ứng dụng khó kiểm tra - và ngẫu nhiên có xu hướng rất quan trọng - bị đẩy ra ngoại vi, vào vương quốc của các thử nghiệm tích hợp có thể hoặc không bao giờ được viết. (Tôi đang nghĩ về các nghi phạm thông thường ở đây, truy cập hệ thống tệp, hydrat hóa các đối tượng từ cơ sở dữ liệu, các cuộc gọi web không đồng bộ, v.v.)
Mã đang được thử nghiệm có xu hướng liên quan đến rất nhiều sự hợp tác giữa các đối tượng và có thể một số luồng logic đơn giản, tất cả đều xảy ra trong bộ nhớ và có thể được viết theo cách đơn giản hơn, dễ hiểu hơn nếu mọi thứ không phải được tách rời hoàn toàn để thử nghiệm.
Tôi hiểu các kỹ thuật để chế nhạo phụ thuộc và như vậy, nhưng theo kinh nghiệm của tôi, việc sử dụng chế độ nhạo báng rất nhiều dẫn đến các bài kiểm tra rất dễ vỡ. Nếu bản năng đầu tiên của tôi khi nhìn thấy một loạt các thử nghiệm chuyển sang màu đỏ là "Tuyệt vời, bây giờ tôi phải sửa tất cả các giả", thì các thử nghiệm của tôi đã trở thành một lực cản thay vì một mạng lưới an toàn.
Tôi đang cố gắng vượt qua rào cản tinh thần này và là một phần trong đó tôi đang đọc cuốn sách của Michael Feathers, hoạt động hiệu quả với Bộ luật kế thừa . Tôi hy vọng sẽ cho tôi thấy một số thứ tôi đang thiếu.
Tôi cũng muốn nghiên cứu một số ứng dụng .NET không cần thiết với độ bao phủ mã tốt, có thể là hệ thống quản lý nội dung hoặc ứng dụng CRUD. Khung thử nghiệm FitNlie mà chú Bob nói đến là thứ mà tôi có thể nhìn vào, nhưng thật tuyệt khi thấy thứ gì đó được viết bằng ngôn ngữ mà tôi quen thuộc nhất.
Bất kỳ đề nghị hoặc lời nói khôn ngoan sẽ được đánh giá cao.