Test Driven Developmentหมายถึงการเขียนการทดสอบก่อนโค้ดและทำตามรอบที่แน่นอน :
- ทดสอบการเขียน
- ตรวจสอบการทดสอบ (เรียกใช้)
- เขียนรหัสการผลิต
- ตรวจสอบการทดสอบ (เรียกใช้)
- ทำความสะอาดรหัสการผลิต
- ตรวจสอบการทดสอบ (วิ่ง)
เท่าที่ฉันกังวลนี่เป็นไปได้ก็ต่อเมื่อโซลูชันการพัฒนาของคุณอนุญาตให้คุณสลับระหว่างการผลิตและรหัสการทดสอบได้อย่างรวดเร็วและทำการทดสอบสำหรับรหัสการผลิตบางส่วนอย่างรวดเร็ว
ตอนนี้ในขณะที่มีกรอบการทดสอบหน่วยจำนวนมากสำหรับ C ++ (ฉันใช้ Bost.Test atm.) ดูเหมือนว่าไม่มีอยู่จริง ๆ (สำหรับC ++ ) Visual Studio (ปลั๊กอิน) โซลูชันที่ทำให้ TDD ทนทานต่อการใช้งาน
"Bearable" หมายความว่าการคลิกครั้งเดียวเพื่อเรียกใช้การทดสอบสำหรับไฟล์ cpp บางไฟล์โดยไม่ต้องตั้งค่าการทดสอบแยกต่างหากด้วยตนเองเป็นต้น "Bearable" ยังหมายความว่าการทดสอบเริ่มต้นง่าย (การเชื่อมโยง!) และทำงานได้อย่างรวดเร็วมาก .
ดังนั้นมีเครื่องมือ (ปลั๊กอิน) และเทคนิคใดบ้างที่ทำให้วัฏจักร TDD เป็นไปได้สำหรับการพัฒนาภาษา C ++ ด้วย Visual Studio?
หมายเหตุ: ฉันสบายดีด้วยเครื่องมือฟรีหรือ "เพื่อการค้า"
กรุณา : ไม่มีคำแนะนำกรอบ (ยกเว้นว่ากรอบงานนั้นมีปลั๊กอิน Visual Studio เฉพาะและคุณต้องการแนะนำปลั๊กอิน)
แก้ไขหมายเหตุ : คำตอบที่ผ่านมาได้ให้ลิงก์เกี่ยวกับวิธีรวมกรอบการทดสอบหน่วยเข้ากับ Visual Studio ทรัพยากรมากขึ้นหรือน้อยลงอธิบายถึงวิธีการรับเฟรมเวิร์ก UT เพื่อรวบรวมและทดสอบการทำงานครั้งแรกของคุณ นี่ไม่ใช่สิ่งที่คำถามนี้เกี่ยวกับ ฉันเห็นว่าการทำงานอย่างมีประสิทธิผลจริง ๆ โดยการทดสอบหน่วยในการบำรุงรักษาด้วยตนเอง (!) vcproj ที่แยกจากคลาสการผลิตของคุณจะเพิ่มโอเวอร์เฮดที่ TDD "เป็นไปไม่ได้" เท่าที่ฉันทราบคุณไม่ได้เพิ่ม "โครงการ" พิเศษใน Java หรือ C # สิ่งเพื่อเปิดใช้งานการทดสอบหน่วยและ TDD และด้วยเหตุผลที่ดี สิ่งนี้ควร เป็นไปได้เมื่อ C ++ ได้รับเครื่องมือที่เหมาะสม แต่ดูเหมือนว่า (คำถามนี้เกี่ยวกับ) ว่ามีเครื่องมือน้อยมากสำหรับ TDD / C ++ / VS
ฉันพบเครื่องมือหนึ่งVisualAssertที่ดูเหมือนจะมุ่งไปในทิศทางที่ถูกต้อง อย่างไรก็ตามดูเหมือนว่ามันไม่ได้มีการใช้อย่างแพร่หลาย (เทียบกับ CppUnit, Boost.Test เป็นต้น)
แก้ไข: ฉันต้องการเพิ่มความคิดเห็นในบริบทของคำถามนี้ ฉันคิดว่ามันเป็นบทสรุปที่ดีของการสรุป (ส่วนหนึ่งของ) ปัญหา: (ความคิดเห็นโดยBilly ONeal )
Visual Studio ไม่ได้ใช้ "บิลด์สคริปต์" ที่ผู้ใช้สามารถแก้ไขได้อย่างสมเหตุสมผล โครงการหนึ่งผลิตหนึ่งไบนารี ยิ่งกว่านั้น Java มีคุณสมบัติที่ Java ไม่เคยสร้างไบนารีที่สมบูรณ์ - ไบนารีที่คุณสร้างเป็นเพียงไฟล์ ZIP ของไฟล์คลาส ดังนั้นจึงเป็นไปได้ที่จะรวบรวมแยกต่างหากจากนั้น JAR เข้าด้วยกันด้วยตนเอง (ใช้เช่น 7z) C ++ และ C # ทั้งคู่เชื่อมโยงไบนารีของพวกเขาดังนั้นโดยทั่วไปแล้วคุณจะไม่สามารถเขียนสคริปต์เช่นนั้นได้ สิ่งที่ใกล้เคียงที่สุดที่คุณจะได้รับคือรวบรวมทุกอย่างแยกจากกันและทำการเชื่อมโยงสองอัน (อันหนึ่งสำหรับการผลิตหนึ่งอันสำหรับการทดสอบ)
7z
) C ++ และ C # ทั้งคู่เชื่อมโยงไบนารีของพวกเขาดังนั้นโดยทั่วไปแล้วคุณจะไม่สามารถเขียนสคริปต์เช่นนั้นได้ สิ่งที่ใกล้เคียงที่สุดที่คุณจะได้รับคือรวบรวมทุกอย่างแยกจากกันและทำการเชื่อมโยงสองอัน
As far as I am aware, you do not add extra "projects" to a Java or C# thing to enable Unit Tests and TDD,
<- ฉันไม่คิดว่ามันถูกต้อง คุณมักจะมีหลายโครงการใน C # เช่นกัน คุณไม่ต้องการจัดส่งรหัสทดสอบในไบนารีการผลิตของคุณ