बाहरी फ़ाइलों से इकाई परीक्षणों के लिए डेटा लोड करने या न करने के लिए


17

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

मैं लगातार संघर्ष कर रहा है:

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

क्या इनमें से कोई एक विरोधी पैटर्न है?


किस प्रकार का डेटा?
जॉन रीड

@JonReid: अधिकतर पाठ।
ड्यूडॉनरॉक

जवाबों:


11

सीधे आपके प्रश्न का उत्तर देने के लिए - नहीं, मुझे विश्वास नहीं है कि सही तरीके से उपयोग किए जाने पर या तो एक विरोधी पैटर्न है।

--- अधिक क्रिया उत्तर ---

मेरे अनुभव से, मुझे लगता है कि यह आपके परीक्षण के लक्ष्य पर बहुत अधिक निर्भर करता है। यहाँ मैंने पिछले नियम का उपयोग किया है और इससे मुझे यह तय करने में मदद मिली:

क्या आप वास्तव में कोड की एक छोटी इकाई का परीक्षण कर रहे हैं? (एक सच इकाई परीक्षण)

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

यदि नहीं, तो आप शायद वास्तव में सिस्टम का ही परीक्षण कर रहे हैं। इन मामलों में, मैं अक्सर बाहरी स्रोत से डेटा लोड करता हूं, यहां होने के कारण:

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

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


9

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

निश्चित रूप से, तकनीकी रूप से आपके पास एक तात्कालिक आश्वासन sinus.wavनहीं है जिसमें वास्तव में साइनस टोन शामिल है, लेकिन जैसा कि आपने कहा, स्रोत में 100,000 आयाम मूल्यों को सूचीबद्ध करना वास्तव में आपको यह नहीं देता है - वास्तव में, यह बदतर है , क्योंकि आप कम से कम एक ऑडियो प्लेयर के साथ एक बाहरी फ़ाइल को जांचने के लिए खेल सकते हैं, जबकि स्रोत कोड में दफन डेटा मूल्यों के साथ कुछ भी करना अनिवार्य रूप से असंभव है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.