2011-08-04 16 views
5

डेटाबेस कॉल का परीक्षण करते समय मैंने कई बार क्या किया है, एक डेटाबेस स्थापित करना है, अंत में एक लेनदेन खोलना और रोलबैक खोलना है। मैंने एक मेमोरी स्क्लाइट डीबी भी इस्तेमाल किया है जिसे मैं प्रत्येक टेस्ट के चारों ओर बना और नष्ट करता हूं। और यह काम करता है और अपेक्षाकृत तेज़ है।डेटाबेस एक्सेस का नकल करने के लिए

मेरा प्रश्न है: मैं डेटाबेस कॉल नकली चाहिए, मैं तकनीक का उपयोग करना चाहिए ऊपर या मैं दोनों का उपयोग करना चाहिए - इकाई परीक्षण, एकीकरण परीक्षणों के लिए एक (मेरे लिए कम से कम, लगता है जो डबल काम) के लिए एक ।

उत्तर

7

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

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

अपनी डेटा परत को सारण करके अपना कोड टेस्ट करने योग्य बनाना, एक अच्छा अभ्यास है। यह आपके कोड को बनाए रखने के लिए और अधिक मजबूत और आसान बना देगा। यदि आप एक रिपोजिटरी पैटर्न लागू करते हैं, तो अपने डेटाबेस कॉल का मजाक करना काफी आसान है।

यूनिट-टेस्ट और एकीकरण परीक्षण अलग-अलग ज़रूरतों को पूरा करते हैं। यूनिट परीक्षण साबित करना है कि कोड का एक टुकड़ा तकनीकी रूप से काम कर रहा है, और कोने के मामलों को पकड़ने के लिए। एकीकरण परीक्षण सॉफ़्टवेयर डिज़ाइन के विरुद्ध घटकों के बीच इंटरफेस को सत्यापित करता है। अकेले यूनिट-परीक्षण सॉफ़्टवेयर के एक टुकड़े की कार्यक्षमता को सत्यापित नहीं कर सकते हैं।

HTH

3

सभी मैं @ करने के लिए जोड़ने के लिए स्टीफ़न का जवाब है: यह कैसे आप अपने खुद के व्यक्तिगत विकास प्रथाओं में इकाई परीक्षण फिट पर निर्भर करता है। यदि आपके पास एक वास्तविक डेटाबेस शामिल है जो आपके द्वारा बनाए गए और व्यवस्थित किए गए एक अंतिम डेटाबेस से युक्त अंत तक एकीकरण परीक्षण है - बशर्ते आपने अपने कोड के माध्यम से सभी अलग-अलग पथों को कवर किया हो और आपके उपयोगकर्ताओं के साथ पोस्ट डेटा हैकिंग करने वाली विभिन्न घटनाएं हो सकें , इत्यादि - आप अपने परीक्षणों के एक बिंदु से ढके हुए हैं जो आपको बता रहे हैं कि आपका सिस्टम काम कर रहा है, जो शायद परीक्षण करने का मुख्य कारण है।

मुझे लगता है कि हालांकि अपने परीक्षण में से प्रत्येक के लिए अपने सिस्टम के हर परत के माध्यम से चलाने होने परीक्षण चालित विकास बहुत कठिन बना देता होगा। किसी भी परीक्षा में लिखने के लिए कुछ मिनट खर्च करने, कुछ मिनटों को पास करने और दोहराने के अलावा, प्रत्येक परत को जगह में रखने और काम करने के क्रम में काम करने की आवश्यकता होती है। इसका मतलब यह है कि व्यक्तिगत परीक्षण व्यवहार और बातचीत कैसे करते हैं इसके संदर्भ में आपके परीक्षण guide you नहीं हो सकते हैं; आपके परीक्षण आपको चीजों को कम करने के लिए मजबूर नहीं करेंगे-उदाहरण के लिए। साथ ही, कहें कि आप एक नई सुविधा जोड़ते हैं और कुछ और तोड़ता है; अलगाव में घटकों के खिलाफ चलने वाले दानेदार परीक्षणों को ट्रैक करना बहुत आसान हो गया है।

इन कारणों मैं इसके लायक है बनाने और दोनों एकीकरण और इकाई परीक्षण को बनाए रखने के लिए, अपने दाल के साथ मज़ाक उड़ाया या बाद में टोंटदार का "दोहरा काम" कहेंगे लिए

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