2011-03-04 19 views
22

क्या प्रति समाधान एक यूनिट-टेस्ट प्रोजेक्ट या प्रति यूनिट-टेस्ट प्रोजेक्ट होना बेहतर है?कौन सा बेहतर है? यूनिट-टेस्ट प्रोजेक्ट प्रति समाधान या प्रति परियोजना?

प्रति समाधान के साथ, यदि आपके पास समाधान में 5 परियोजनाएं हैं तो आप 1 यूनिट-टेस्ट प्रोजेक्ट के साथ समाप्त होते हैं जिसमें प्रत्येक 5 परियोजनाओं के लिए परीक्षण होते हैं।

प्रति परियोजना के साथ, यदि आपके पास समाधान में 5 परियोजनाएं हैं तो आप 5 यूनिट-टेस्ट परियोजनाओं के साथ समाप्त हो जाते हैं।

सही तरीका क्या है?

मुझे लगता है कि के रूप में Write Unit tests into an assembly or in a separate assembly?

उत्तर

22

असेंबली एक पैकेजिंग/परिनियोजन चिंता है, इसलिए हम उन्हें आम तौर पर विभाजित करते हैं क्योंकि हम उन्हें अपने उत्पाद के साथ तैनात नहीं करना चाहते हैं। चाहे आप उन्हें लाइब्रेरी या प्रति समाधान के बाहर विभाजित करते हैं, दोनों में योग्यताएं हैं।

आखिरकार, आप सभी डेवलपर्स के लिए तत्काल उपलब्ध होने के लिए परीक्षण चाहते हैं, ताकि डेवलपर्स जान सकें कि आवश्यकता होने पर उन्हें कहां मिलना है। आप नए परीक्षणों को लिखने के लिए न्यूनतम ओवरहेड के साथ एक बाधा मुक्त वातावरण भी चाहते हैं ताकि आप उन शंकुओं को नहीं मार रहे हैं जो परीक्षण लिखना नहीं चाहते हैं। टेस्ट को भी संकलित और निष्पादित करना चाहिए - परियोजना संरचना इस सब में एक भूमिका निभा सकती है।

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

यदि आपके पास मॉड्यूलर एप्लिकेशन जैसे विशेष पैकेजिंग विचार हैं जहां मॉड्यूल एक-दूसरे से अवगत नहीं होना चाहिए, तो आपकी परीक्षण परियोजनाओं को यह भी प्रतिबिंबित करना चाहिए।

छोटी परियोजनाओं में जहां बहुत सारी परियोजनाएं नहीं हैं, 1: 1 अनुपात आमतौर पर पसंदीदा दृष्टिकोण होता है। हालांकि, विजुअल स्टूडियो का प्रदर्शन तेजी से घटता है क्योंकि परियोजनाओं की संख्या बढ़ जाती है। 40 परियोजना चिह्न संकलन के आसपास परीक्षणों को संकलित करने और चलाने में बाधा बन जाती है, इसलिए परीक्षण परियोजनाओं को मजबूत करने से बड़ी परियोजनाओं का लाभ हो सकता है।

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

+1

व्यावहारिक होने के कारण आम तौर पर स्वीकार्य दृष्टिकोण होता है। यह पूरी तरह फिट बैठता है। धन्यवाद! –

+2

मुझे लगता है कि मेरा मुद्दा यह है कि कोई निश्चित बेहतर दृष्टिकोण नहीं है क्योंकि उत्तर आपकी आवश्यकताओं पर निर्भर करता है। बस सुसंगत रहें। – bryanbcook

+3

+1 "बड़ी परियोजनाओं के लिए परीक्षण परियोजनाओं को मजबूत करने से लाभ हो सकता है।" –

8

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

+3

यदि आप अपने समाधान में बहुत सारी परियोजनाओं के बारे में चिंतित हैं, तो इसे एक अलग समाधान फ़ोल्डर में जोड़ सकते हैं। – aceinthehole

+0

@aceinthehole, समाधान फ़ोल्डर दृश्य स्टूडियो प्रदर्शन में गिरावट के साथ मदद नहीं करता है जब परियोजनाओं की संख्या बढ़ती है, क्योंकि इसका उल्लेख ब्रायनबूक –

+0

द्वारा किया गया था, मैं निश्चित रूप से इस तरह से जाऊंगा। MyApp.ClassLibrary, MyApp.ClassLibrary.UnitTests, MyApp.ClassLibrary.IntegrationTests –

1

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

1

मैं उनमें से एक "यह निर्भर करता है" उत्तरों के साथ जा रहा हूं। व्यक्तिगत रूप से, मैं एक ही प्रोजेक्ट में सभी परीक्षणों को प्रत्येक असेंबली के लिए प्रोजेक्ट के भीतर अलग-अलग फ़ोल्डरों के साथ रखता हूं (साथ ही साथ उप-फ़ोल्डरों को आवश्यकतानुसार।) यह पूरे सेट को चलाने में आसान बनाता है, या तो विजुअलस्टूडियो या क्रूज़ कंट्रोल के भीतर से .net।

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

2

हमारे पास एक बहुत बड़ी प्रणाली में समाधान से परियोजनाओं की परियोजनाओं में से एक से एक अनुपात है, हम उस बिंदु पर पहुंच गए हैं जहां हर बार चेक-इन करते समय 90 मिनट से अधिक समय लगता है। मैंने नई समाधान कॉन्फ़िगरेशन बनाई है जो केवल टेस्ट प्रोजेक्ट बनाता है, यह सुनिश्चित करने के लिए कि सभी टेस्ट केस काम कर रहे हैं, नए कॉन्फ़िगरेशन दिन में एक बार चलते हैं, डेवलपर्स अपने विकास वातावरण में अपने कोड का परीक्षण करने के लिए एकजुट कॉन्फ़िगरेशन पर स्विच कर सकते हैं। Pl। मुझे अपनी फीड वापस

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