क्या कोई खुला स्रोत अनुप्रयोग हैं जो परीक्षण संचालित विकास का उपयोग करके विकसित किए गए हैं जो कि अच्छी इकाई परीक्षण के मॉडल के रूप में काम करते हैं?
मैं C # और .NET में उदाहरण देखना चाहूंगा। (ध्यान दें कि मैंने आवेदनों का उल्लेख किया है, न कि केवल पुस्तकालयों का।)
मैं एक मध्य स्तरीय प्रोग्रामर हूं जो वास्तव में टीडीडी में विश्वास करना और अभ्यास करना चाहता हूं। मैं अपने दिन के काम में जिस ऐप पर काम करता हूं वह बहुत जटिल है - कोड की लगभग 1 मिलियन लाइनें - और मैं अधिक यूनिट परीक्षण शुरू करना पसंद करूंगा। हमारे पास कुछ यूनिट परीक्षण हैं, लेकिन TDD पर और कोड पर काम करने के साथ मेरे प्रयास पहले से ही परीक्षण के लिए उत्साहजनक नहीं हैं।
मेरे व्यक्तिगत रूप से सीमित अनुभव में, TDD डिकम्पलिंग के नाम पर बहुत अधिक जटिलता को प्रोत्साहित करता है। परीक्षण के लिए कठिन हैं कि ऐप के बिट्स - और जो संयोगवश महत्वपूर्ण हो जाते हैं - परिधि के लिए बाहर धकेल दिया जाता है, एकीकरण परीक्षणों के दायरे में जो कभी लिखा हो सकता है या नहीं। (मैं यहां सामान्य संदिग्धों के बारे में सोच रहा हूं, फाइल सिस्टम एक्सेस, डेटाबेस से ऑब्जेक्ट्स को हाइड करना, एसिंक्रोनस वेब कॉल आदि)।
कोड जो परीक्षण के अधीन है, वस्तुओं के बीच बहुत से सहयोग को शामिल करता है, और शायद कुछ सरल प्रवाह तर्क, जो सभी स्मृति में होता है और जो यकीनन एक सरल, अधिक समझने योग्य तरीके से लिखा जा सकता है, अगर सब कुछ पूरी तरह से विघटित नहीं होना था परीक्षण के लिए।
मैं निर्भरता और इस तरह के मजाक उड़ाने की तकनीकों को समझता हूं, लेकिन मेरे अनुभव में मॉकिंग का भारी उपयोग बहुत भंगुर परीक्षणों की ओर ले जाता है। यदि परीक्षणों का एक गुच्छा देखने पर मेरी पहली वृत्ति लाल हो जाती है, "महान, अब मुझे सभी मोक्स को ठीक करना है," तो मेरे परीक्षण एक सुरक्षा जाल के बजाय एक खींचें बन गए हैं।
मैं इस मानसिक बाधा को पार करने की कोशिश कर रहा हूं, और उस हिस्से के रूप में मैं माइकल फेदर्स की किताब, वर्किंग इफेक्टिवली विद लिगेसी कोड पढ़ रहा हूं । मुझे आशा है कि मुझे जो कुछ याद आ रहा है वह मुझे दिखाएगा।
मैं अच्छे कोड कवरेज, शायद सामग्री प्रबंधन प्रणाली, या CRUD ऐप के साथ कुछ nontrivial .NET अनुप्रयोगों का अध्ययन करना चाहूंगा। फिटनैसे परीक्षण की रूपरेखा जो अंकल बॉब के बारे में बात करती है, वह है जिसे मैं शायद देखूंगा, लेकिन जिस भाषा में मैं सबसे अधिक परिचित हूं, उस पर लिखी गई चीज़ को देखना अच्छा होगा।
ज्ञान के किसी भी सुझाव या शब्दों की सराहना की जाएगी।