टेस्ट ड्रिवेन डेवलपमेंट का अर्थ है कोड से पहले टेस्ट लिखना और एक निश्चित चक्र का अनुसरण करना :
- टेस्ट लिखो
- परीक्षण जांचें (चलाएँ)
- उत्पादन कोड लिखें
- परीक्षण जांचें (चलाएँ)
- उत्पादन कोड को साफ करें
- परीक्षण जांचें (चलाएँ)
जहां तक मेरा सवाल है, यह केवल तभी संभव है जब आपका विकास समाधान आपको उत्पादन और परीक्षण कोड के बीच बहुत तेज़ी से स्विच करने की अनुमति देता है, और एक निश्चित उत्पादन कोड भाग के लिए परीक्षण को बहुत तेज़ी से निष्पादित करता है।
अब, जबकि वहाँ सी के लिए यूनिट परीक्षण फ़्रेमवर्क ++ (मैं Bost.Test एटीएम का उपयोग कर रहा हूँ।) के बहुत सारे मौजूद यह है कि वहाँ प्रतीत होता है नहीं करता है वास्तव में किसी भी सभ्य (के लिए मौजूद हैं देशी सी ++ ) दृश्य स्टूडियो (प्लगइन) समाधान है कि TDD बनाता है उपयोग की गई फ्रेमवर्क की परवाह किए बिना साइकिल बीरबल।
"बेयरबल" का अर्थ है कि एक अलग-अलग परीक्षण प्रोजेक्ट आदि को मैन्युअल रूप से सेट किए बिना एक निश्चित सीपीपी फ़ाइल के लिए एक परीक्षण चलाने के लिए यह एक-क्लिक की कार्रवाई है "बीरबल" का मतलब यह भी है कि एक साधारण परीक्षण शुरू होता है (लिंकिंग!) और बहुत जल्दी चलता है। ।
तो, कौन से उपकरण (प्लगइन्स) और तकनीकें हैं जो विजुअल स्टूडियो के साथ देशी C ++ के विकास के लिए TDD चक्र को संभव बनाते हैं?
नोट: मैं मुफ़्त या "वाणिज्यिक" टूल के साथ ठीक हूं।
कृपया : कोई रूपरेखा अनुशंसाएँ। (जब तक कि फ्रेमवर्क में एक समर्पित विज़ुअल स्टूडियो प्लगइन नहीं है और आप प्लगइन की सिफारिश करना चाहते हैं।)
नोट संपादित करें : अब तक के उत्तरों ने यूनिट टेस्टिंग फ्रेमवर्क को विज़ुअल स्टूडियो में एकीकृत करने के तरीके के बारे में लिंक प्रदान किए हैं। संसाधनों का कमोबेश वर्णन है कि कैसे यूटी ढांचे को संकलित करने के लिए और अपने पहले टेस्ट को चलाने के लिए प्राप्त करें। यह वह जगह है नहीं क्या इस सवाल के बारे में है। मेरी राय है कि वास्तव में उत्पादक रूप से काम करने के लिए, यूनिट टेस्ट को मैन्युअल रूप से बनाए रखा गया है (!), आपके उत्पादन वर्गों से अलग vcproj इतना ओवरहेड जोड़ देगा कि टीडीडी "संभव नहीं है"। जहां तक मुझे जानकारी है, आप यूनिट टेस्ट और टीडीडी को सक्षम करने के लिए एक जावा या सी # चीज के लिए अतिरिक्त "प्रोजेक्ट" नहीं जोड़ते हैं, और एक अच्छे कारण के लिए। यह होना चाहिए C ++ के साथ सही उपकरण दिए जा सकते हैं, लेकिन ऐसा लगता है (यह सवाल है) कि TDD / C ++ / VS के लिए बहुत कम उपकरण हैं।
चारों ओर घूमते हुए, मुझे एक उपकरण मिला है, विजुअलएसेटर , जो सही दिशा में लक्ष्य बनाता है । हालाँकि, afaiks, यह व्यापक उपयोग में नहीं लगता (CppUnit, Boost.Test आदि की तुलना में)।
संपादित करें: मैं इस प्रश्न के संदर्भ के लिए एक टिप्पणी जोड़ना चाहूंगा। मुझे लगता है कि यह समस्या के रूपरेखा (भाग) का एक अच्छा सारांश है: ( बिली ओनेल द्वारा टिप्पणी )
विज़ुअल स्टूडियो "बिल्ड स्क्रिप्ट" का उपयोग नहीं करता है जो उपयोगकर्ता द्वारा यथोचित संपादन योग्य हैं। एक प्रोजेक्ट एक बाइनरी पैदा करता है। इसके अलावा, जावा में ऐसी संपत्ति है जो जावा कभी भी एक पूर्ण बाइनरी नहीं बनाता है - आपके द्वारा बनाया गया बाइनरी केवल क्लास फ़ाइलों का एक ज़िप है। इसलिए अलग-अलग संकलन करना संभव है, फिर 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 # में कई परियोजनाएं हैं; आप अपने उत्पादन बाइनरी में अपने परीक्षण कोड को शिप नहीं करना चाहते हैं।