2012-01-24 10 views
7

बड़ी परियोजनाओं पर काम करते समय, संकलन और इकाई परीक्षण ढांचे को शुरू करने में कम से कम 10 सेकंड लग सकते हैं। फीडबैक लूप समय को कम करने के प्रभावी तरीके हैं? मैं परीक्षण इकाइयों के बीच एक यूनिट टेस्ट क्लास और एक अन्य वर्ग में केवल छोटे बदलाव करना चाहता हूं।सी # में, यूनिट टेस्ट फीडबैक लूप को बेहतर बनाने का एक अच्छा तरीका क्या है?

मैंने कुछ अन्य दृष्टिकोणों पर विचार किया। मुझे एक टेस्ट क्लास और निर्भरताओं को संकलित करने और चलाने का कोई तरीका नहीं दिखता है। मैं समाधान में परियोजनाओं की संख्या में वृद्धि कर सकता हूं ताकि प्रत्येक असेंबली संकलित करने में कम समय लगे, लेकिन इससे अन्य मुद्दों का कारण बनता है। एनसीआरंच मैन्युअल रूप से परीक्षण चलाने की आवश्यकता को कम करने के लिए प्रतीत होता है, लेकिन यह अभी भी पूर्ण असेंबली संकलित करता है।

स्पष्टीकरण: 10 सेकंड में यूनिट टेस्ट क्लास और परीक्षण के तहत कक्षा को संकलित करने के लिए समय शामिल था। एनसीआरंच के साथ मेरा मुद्दा कम शक्तिशाली कंप्यूटर की वजह से हो सकता है।

उत्तर

7

आपको प्रत्येक टेस्ट क्लास को एक अलग असेंबली में रखना होगा - एक असेंबली प्रभावी रूप से संकलन की इकाई है। यदि के बाद रीकंपाइल करने में 10 सेकंड लगते हैं तो बस एक टेस्ट क्लास में बदलाव होता है, जो बताता है कि या तो आपके पास एक असेंबली में बहुत से परीक्षण हैं, या आपके पास बहुत धीमी मशीन है। यह अच्छी तरह से हो सकता है कि बेहतर मशीन प्राप्त करना (या मौजूदा मेमोरी या एसएसडी के साथ मौजूदा में सुधार करना) सबसे अच्छा तरीका है।

मैं खुद एनसीआरंच का उपयोग करता हूं, और हालांकि यह अभी भी पूर्ण असेंबली संकलित करता है, तथ्य यह है कि यह पृष्ठभूमि में ऐसा कर रहा है, जिसका अर्थ है कि आमतौर पर जब मैंने मानसिक सांस ली है, परीक्षणों का पुनर्निर्माण और चल रहा है। एनसीआरंच अच्छी तरह से काम करता है यदि आपके पास एकाधिक प्रोसेसर और रैमडिस्क है, तो आप इसे कहां बना सकते हैं, और यह भी कितने प्रोसेसर इसका उपयोग कर सकते हैं।

आप केवल NCrunch माना गया है (या The Mighty Moose आदि - समान सामान), लेकिन नहीं वास्तव में यह करने की कोशिश की, तो आप इसे मानते हुए यह आप के लिए काफी तेजी से नहीं होगा पहले एक जाना देना चाहिए।

+0

मैं एक बिंदु पर स्पष्ट नहीं था। कक्षा में बदलाव के बाद 10 सेकंड का परीक्षण किया गया था। मैंने एनसीआरंच की कोशिश की, लेकिन मुझे लगता है कि मेरे कंप्यूटर में बिजली की कमी थी। – BenMaddox

+0

मैं एनसीआरंच का उपयोग करता हूं और यह आसानी से चलता है। अनुमोदित, मेरे पास एक हालिया कंप्यूटर और एक एसएसडी है। –

+0

@ बेन मैडॉक्स: आपकी मशीन क्या कल्पना है, और इसे सुधारने के लिए कितना यथार्थवादी होगा? –

2

आप AutoTest.Net देख सकते हैं, जो विजुअल स्टूडियो के लिए ऐड-ऑन है जो आपके कोड को लिखते समय पृष्ठभूमि में आपके यूनिट परीक्षण चलाता है।

इस तरह आप अपने यूनिट परीक्षणों को कंपाइलर त्रुटियों/चेतावनियों की तरह अधिक कर सकते हैं और अपेक्षाकृत वास्तविक समय प्रतिक्रिया प्राप्त कर सकते हैं।

0

घोषणात्मक इकाई परीक्षण प्रभावी रूप से संकलन समय को शून्य कर देंगे, लेकिन केवल तभी जब आपका आर्किटेक्चर अनुमति देता है। उदाहरण के लिए, यूनिट परीक्षणों को डेटाबेस में ले जाने के लिए बड़े पैमाने पर प्रोजेक्ट में हमारे लिए अच्छा काम किया।

+0

मैं अभी भी परीक्षण की जा रही कक्षा में बदलाव कर रहा हूं। मैंने कभी भी डेटाबेस में चलती यूनिट परीक्षणों को नहीं माना। – BenMaddox

+0

हां, केवल नए परीक्षण जोड़े जाने पर एक सुधार होगा। – henginy

संबंधित मुद्दे