Test Driven Development ngụ ý viết thử nghiệm trước mã và theo một chu kỳ nhất định :
- Kiểm tra viết
- Kiểm tra kiểm tra (chạy)
- Viết mã sản xuất
- Kiểm tra kiểm tra (chạy)
- Làm sạch mã sản xuất
- Kiểm tra kiểm tra (chạy)
Theo như tôi quan tâm, điều này chỉ có thể nếu giải pháp phát triển của bạn cho phép bạn chuyển đổi rất nhanh giữa mã sản xuất và mã thử nghiệm và thực hiện thử nghiệm cho một phần mã sản xuất nhất định cực kỳ nhanh chóng.
Bây giờ, trong khi tồn tại rất nhiều Khung kiểm tra đơn vị cho C ++ (Tôi đang sử dụng Bost.Test atm.) Dường như không thực sự tồn tại bất kỳ giải pháp Visual Studio (Plugin C ++ ) nào tạo ra TDD chu kỳ chịu được bất kể khuôn khổ được sử dụng.
"Có thể chịu được" có nghĩa là hành động chỉ bằng một cú nhấp chuột để chạy thử nghiệm cho một tệp cpp nhất định mà không phải thiết lập thủ công dự án thử nghiệm riêng biệt, v.v. "Có thể chịu được" cũng có nghĩa là thử nghiệm đơn giản bắt đầu (liên kết!) Và chạy rất nhanh .
Vậy, những công cụ (plugin) và kỹ thuật nào hiện có giúp chu trình TDD có thể phát triển C ++ bản địa với Visual Studio?
Lưu ý: Tôi ổn với các công cụ miễn phí hoặc "thương mại".
Xin vui lòng : Không có khuyến nghị khung. (Trừ khi khung có plugin Visual Studio chuyên dụng và bạn muốn giới thiệu plugin.)
Chỉnh sửa Lưu ý : Các câu trả lời cho đến nay đã cung cấp các liên kết về cách tích hợp khung Kiểm tra đơn vị vào Visual Studio. Các tài nguyên ít nhiều mô tả cách lấy khung UT để biên dịch và chạy thử nghiệm đầu tiên của bạn. Đây không phải là những gì câu hỏi này là về. Tôi cho rằng để thực sự làm việc hiệu quả, có các Bài kiểm tra đơn vị được bảo trì thủ công (!), Vcproj riêng biệt khỏi các lớp sản xuất của bạn sẽ thêm rất nhiều chi phí mà TDD "không thể thực hiện được". Theo như tôi biết, bạn không thêm các "dự án" bổ sung vào thứ Java hoặc C # để kích hoạt Bài kiểm tra đơn vị và TDD và vì một lý do chính đáng. Điều này nên có thể với C ++ được cung cấp đúng công cụ, nhưng có vẻ như (câu hỏi này là về) có rất ít công cụ cho TDD / C ++ / VS.
Googling xung quanh, tôi đã tìm thấy một công cụ, VisualAssert , dường như nhằm đi đúng hướng. Tuy nhiên, afaiks, nó dường như không được sử dụng rộng rãi (so với CppUnit, Boost.Test, v.v.).
Chỉnh sửa: Tôi muốn thêm một nhận xét cho bối cảnh cho câu hỏi này. Tôi nghĩ rằng đó là một bản tóm tắt tốt về phác thảo (một phần) vấn đề: (bình luận của Billy ONeal )
Visual Studio không sử dụng "tập lệnh xây dựng" mà người dùng có thể chỉnh sửa hợp lý. Một dự án tạo ra một nhị phân. Hơn nữa, Java có thuộc tính mà Java không bao giờ xây dựng một nhị phân hoàn chỉnh - nhị phân mà bạn xây dựng chỉ là một ZIP của các tệp lớp. Do đó, có thể biên dịch riêng sau đó JAR với nhau theo cách thủ công (sử dụng ví dụ 7z). Cả C ++ và C # đều thực sự liên kết các nhị phân của chúng, vì vậy nói chung bạn không thể viết một tập lệnh như thế. Cách gần nhất bạn có thể nhận được là biên dịch mọi thứ riêng biệt và sau đó thực hiện hai liên kết (một để sản xuất, một để thử nghiệm).
7z
). Cả C ++ và C # đều thực sự liên kết các nhị phân của chúng, vì vậy nói chung bạn không thể viết một tập lệnh như thế. Cách gần nhất bạn có thể nhận được là biên dịch mọi thứ riêng biệt và sau đó thực hiện hai liên kết (một để sản xuất, một để thử nghiệm).
As far as I am aware, you do not add extra "projects" to a Java or C# thing to enable Unit Tests and TDD,
<- Tôi không nghĩ rằng điều này là chính xác. Bạn thường có nhiều dự án trong C # là tốt; bạn không muốn gửi mã kiểm tra của mình trong tệp nhị phân sản xuất của mình.