java - जुनीट के साथ डेटा संचालित परीक्षण




unit-testing junit (7)

JUnit4 में आप डेटा संचालित परीक्षण करने के लिए Parameterized टेस्ट्रुनर का उपयोग कर सकते हैं।

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

आप @Parameters विधि (या किसी बाहरी स्रोत से डेटा प्राप्त करने) में बाहरी टेक्स्ट फ़ाइल को पढ़ने और पार्स करने के लिए कोड लिख सकते हैं, और फिर आप परीक्षण को @Parameters किए बिना इस फ़ाइल को संपादित करके नए परीक्षण जोड़ सकेंगे।

आप जुनीट में डेटा संचालित परीक्षण लिखने के लिए क्या उपयोग करते हैं?

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


आप टेस्टकेस को "DataDrivenTestCase" के साथ विस्तारित करने से बेहतर हैं जो आपकी आवश्यकताओं के अनुरूप है। यहां काम करने का उदाहरण है: http://mrlalonde.blogspot.ca/2012/08/data-driven-tests-with-junit.html

पैरामीटरयुक्त परीक्षणों के विपरीत, यह अच्छी तरह से नामित परीक्षण मामलों की अनुमति देता है।


कुछ परीक्षण स्वयं को इंटरफेस संचालित करने के लिए उधार देंगे।

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


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


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

आप जुनीट थ्योरीज़ धावक को भी देख सकते हैं, लेकिन मेरी यादें यह है कि डेटा संचालित डेटासेट के लिए यह बहुत अच्छा नहीं है, किस तरह का अर्थ समझता है क्योंकि जुनीट बड़ी मात्रा में बाहरी डेटा के साथ काम करने के बारे में नहीं है।


यह वह जगह है जहां टेस्टएनजी, इसके @ डाटासोर्स के साथ चमकता है। यही कारण है कि मैं इसे जुनीट पसंद करता हूं; अन्य निर्भरता और समांतर थ्रेडेड परीक्षण हैं।


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

इस ब्लॉग पोस्ट श्रृंखला में पहचाने जाने वाले अधिक दोष हैं: http://www.kumaranuj.com/2012/08/junits-parameterized-runner-and-data.html

अब EasyTest के रूप में बहुत अच्छी तरह से एक व्यापक समाधान आ रहा है, जो एयू ढांचे को जुनीट से बाहर बढ़ाया गया है और इसका मतलब है कि इसके उपयोगकर्ताओं को बहुत सारी कार्यक्षमता दी जाए। इसका प्राथमिक ध्यान JUnit का उपयोग करके डेटा संचालित परीक्षण करना है, हालांकि आपको वास्तव में जुनीट पर निर्भर रहने की आवश्यकता नहीं है। यहां रिफर्न्स के लिए जिथब प्रोजेक्ट है: https://github.com/anujgandharv/easytest

यदि कोई भी अपने विचार / कोड / सुझावों का योगदान करने में रूचि रखता है तो यह वह समय है। आप बस जिथब रिपोजिटरी पर जा सकते हैं और मुद्दों को बना सकते हैं।






data-driven-tests