2009-01-30 15 views
14

साथ सी # में यूनिट परीक्षण के साथ प्रारंभ करना मैं जानता हूँ कि दृश्य स्टूडियो कुछ यूनिट टेस्टिंग उपहार प्रदान करता है। मैं उनका उपयोग कैसे करूं, आप उनका उपयोग कैसे करते हैं? यूनिट परीक्षण के बारे में मुझे क्या पता होना चाहिए (मान लीजिए कि मुझे कुछ नहीं पता)।दृश्य स्टूडियो

This question समान है, लेकिन यह समाधान नहीं करता है दृश्य स्टूडियो करते हैं, उसकी वजह से कोई डुप्लिकेट के रूप में चिह्नित करते कृपया कर सकते हैं क्या नहीं। सामुदायिक विकी के रूप में पोस्ट किया गया क्योंकि मैं एक प्रतिनिधि वेश्या बनने की कोशिश नहीं कर रहा हूं।

उत्तर

2

वी.एस. में इकाई परीक्षण संरचना में यह उपयोग है NUnit के समान है। इसकी एक दिलचस्प (और उपयोगी) विशेषता एनयूनीट से काफी भिन्न है। वीएस यूनिट परीक्षण का उपयोग उस कोड के साथ किया जा सकता है जिसे यूनिट परीक्षण के साथ दिमाग में नहीं लिखा गया था।

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

वी.एस. इकाई परीक्षण रूपरेखा वास्तव में एक बहुत अच्छी तरह से लागू किया और आसानी से इस्तेमाल। सबसे अच्छी बात यह है कि आप एक आवेदन है कि मन में इकाई परीक्षण (कुछ है कि NUnit के साथ आसान नहीं है) के साथ नहीं बनाया गया था के साथ उपयोग कर सकते हैं।

+0

NUnit को जोड़ने/समझाने की देखभाल? – Malfist

+0

न्यूटिट में ऐसा क्यों आसान नहीं है? एनयूनीट परीक्षण सेटअप/टियरडाउन करने की समान क्षमता प्रदान करता है। आप एनयूनीट का यूनिट टेस्ट कोड में उपयोग कर सकते हैं जिसे यूनिट परीक्षण के साथ भी लिखा नहीं गया था। –

+0

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

2

पहली बात मैं करना होगा TestDriven.Net की एक प्रतिलिपि डाउनलोड एक परीक्षण धावक के रूप में उपयोग करने के लिए है। यह एक राइट-क्लिक मेनू जोड़ देगा जो आपको परीक्षण विधि में राइट-क्लिक करके और रन टेस्ट का चयन करके व्यक्तिगत परीक्षण चलाने देगा। (कक्षा में राइट क्लिक करें, लेकिन एक विधि के बाहर) यह भी एक कक्षा में सभी परीक्षणों के लिए काम करता है, एक नाम स्थान (सही परियोजना पर या एक वर्ग के बाहर नाम स्थान में क्लिक करें), या एक पूरे समाधान (समाधान पर राइट क्लिक करें)। यह कवरेज (अंतर्निर्मित या एनकॉवर) या उसी राइट-क्लिक मेनू से डीबगर के साथ परीक्षण चलाने की क्षमता भी जोड़ता है।

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

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

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

आप आवश्यकतानुसार अधिक से अधिक प्रकार के परीक्षण जोड़ सकते हैं। आप अपने स्रोत कोड नियंत्रण को भी सेट अप कर सकते हैं ताकि चेक-इन करने से पहले कुछ या सभी परीक्षण पास हो जाएं।

+0

TestDriven.Net का उपयोग क्यों करें? यह बिल्कुल सवाल का जवाब नहीं देता है (जो अंतर्निहित परीक्षण उपकरण का उपयोग करने के बारे में था)। –

+0

आप अभी भी माइक्रोसॉफ्ट परीक्षण ढांचे का उपयोग कर रहे हैं, लेकिन टेस्टड्रिवेन.Net से परीक्षण धावक का उपयोग कर रहे हैं। मैं इसे पसंद करता हूं क्योंकि कोड से सीधे परीक्षण चलाने के लिए यह अधिक सुविधाजनक है। – tvanfosson

5

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

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

string stringVal = "This"; 
Assert.IsTrue(stringVal.Length == 4); 

यह कहना है कि stringVal नामित varaible के लिए, लंबाई संपत्ति असाइनमेंट के बाद 4 के बराबर होना चाहिए:

आमतौर पर, आप लेखन परीक्षण है कि इस के समान दिखाई पड़ता है।

अन्य धागे में सूचीबद्ध संसाधनों को समझने के लिए एक अच्छा प्रारंभिक बिंदु प्रदान करना चाहिए कि यूनिट परीक्षण सामान्य रूप से क्या है।

+0

मुझे पता है (सोचो) एमएस ने टाइपमैक खरीदा, लेकिन मुझे समझ में आया कि यह अभी भी एक ऐड-ऑन था। मुझे टीम सुइट संस्करण मिला है और इसमें अंतर्निहित मॉकिंग फ्रेमवर्क नहीं है। मैं मजाक करने के लिए RhinoMocks का उपयोग करें। – tvanfosson

+0

@tvanfosson शायद यह वास्तव में मजाक नहीं कर रहा है। मैं निजी और आंतरिक तरीकों का परीक्षण करने की अनुमति देने के लिए "निजी एक्सेसर" ऑब्जेक्ट्स बनाने की क्षमता का जिक्र कर रहा था। –

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