2013-08-03 8 views
9

मैं एरलांग के लिए नया हूं। इसमें 2 टेस्ट फ्रेमवर्क हैं: ईयूनीट और कॉमन टेस्ट। मैं एक दूसरे पर उपयोग करने के लिए उलझन में हूँ। क्या कोई मुझे समझा सकता है कि आम परीक्षा में ईयूनीट के फायदे क्या हैं, और इसके विपरीत। सीम आम टेस्ट सबकुछ कर सकता है जो यूरोपीय संघ कर सकता है और बहुत कुछ, यह सुनिश्चित नहीं है कि मुझे ईयूनीट का उपयोग करना चाहिए। धन्यवाद!ईयूनीट बनाम आम परीक्षण

उत्तर

5

यूनिट वास्तव में सरल है और सफेद बॉक्स स्तर पर मॉड्यूल परीक्षण या लाइब्रेरी परीक्षण के लिए बहुत अच्छा है। यह rebar करने के लिए एकीकृत है।

आम परीक्षण काले बॉक्स परीक्षण और आवेदन और आवेदन परीक्षण प्रणाली के लिए अधिक उन्मुख है। यह परीक्षण कवरेज के साथ बहुत आसानी से आता है।

संपादित (के बाद एंडी टिप्पणी):

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

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

आम परीक्षण आपको सभी फ़ंक्शन या समूह में प्रत्येक परीक्षण केस सूचीबद्ध करने के लिए कहता है। जहां तक ​​मुझे पता है कि यह जनरेटर का परीक्षण नहीं करता है, इसलिए प्रत्येक कार्य के सभी परीक्षण पैटर्नों के माध्यम से जाना आसान नहीं होता है। यही कारण है कि मुझे लगता है कि यह एकता सफेद बॉक्स परीक्षणों के लिए कम अनुकूल है। दूसरी तरफ, init_per_testcase, init_per_group ... परीक्षणों को व्यवस्थित करने के लिए यूनिट फ़िक्स्चर से अधिक लचीला होते हैं जब उन्हें चलाने के लिए कुछ एप्लिकेशन संदर्भ की आवश्यकता होती है। आम परीक्षण लॉग निर्देशिका में किए गए सभी परीक्षणों का इतिहास भी रखता है, यह अच्छा है, लेकिन मैं इसे उपयोगी रखने के लिए रन की संख्या को सीमित करने का सुझाव देता हूं।

संपादित करें:

नहीं निर्यात कार्यों की समस्या से बचने के लिए दोनों eunit और आम परीक्षण के लिए, यह परिभाषित करता है उपयोग करने के लिए संभव है। rebar.config में (उदाहरण के लिए, क्योंकि मैं eunit परीक्षण के लिए अलग-अलग फ़ाइलों का उपयोग करें):

%% export all functions when used in eunit context 
-ifdef(EUNIT_TEST). 
-compile(export_all). 
-endif. 

आप सत्यापित कर सकते हैं कि यह केवल संशोधित कि संकलित:

{eunit_compile_opts, [{d,'EUNIT_TEST',true}]}. 
{erl_opts, [debug_info, warn_export_all]}. 

और एक मॉड्यूल में, यह आवश्यक है अगर eunit

D:\git\helper>rebar clean eunit compile 
==> helper (clean) 
==> helper (eunit) 
Compiled test/help_list_tests.erl 
Compiled test/help_ets_tests.erl 
Compiled test/help_num_tests.erl 
Compiled src/help_ets.erl 
Compiled src/help_list.erl 
Compiled src/helper.erl 
src/help_num.erl:6: Warning: export_all flag enabled - all functions will be exported 
Compiled src/help_num.erl 
Compiled src/help_code.erl 
    All 31 tests passed. 
Cover analysis: d:/git/helper/.eunit/index.html 
==> helper (compile) 
Compiled src/help_ets.erl 
Compiled src/help_list.erl 
Compiled src/helper.erl 
Compiled src/help_num.erl 
Compiled src/help_code.erl 
+0

धन्यवाद पास्कल। मैंने कुछ एरलांग इंजीनियरों से बात की, मुझे मिलने का एकमात्र कारण आम_टेस्ट अप्रत्याशित कार्यों का परीक्षण नहीं कर सकता है। – user342673

+0

यह सच नहीं है, आप स्रोत मॉड्यूल में परीक्षण एम्बेड करते हैं ताकि आप जो चाहें उसका परीक्षण कर सकें। –

+0

मैंने एंडी टिप्पणी के बाद अपना जवाब संपादित किया है। मुझे सामान्य परीक्षण का उपयोग करने के इस तरीके से अवगत नहीं है, मैं test_SUITE.erl मॉड्यूल में परीक्षण मामलों को लिखता हूं – Pascal

10

Learn you some erlang (erlang के लिए सबसे अच्छा ऑनलाइन संसाधनों में से एक आधिकारिक दस्तावेज़ के अलावा) के लिए कोड काफी अच्छी तरह से दोनों तरीकों बताते हैं:

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

आम परीक्षण अधिक भारी उठाने करता है: एकीकरण & सिस्टम परीक्षण, ब्लैक-बॉक्स प्रकार की सामग्री। यह ज़्यादा जटिल है, ज़ाहिर है, और बहुत शक्तिशाली है।

जब आप इसमें हों, तो आप डायलज़र, एरलांग/ओटीपी में एक और एकीकृत परीक्षण उपकरण का प्रयास कर सकते हैं, जो मृत या पहुंचने योग्य कोड का पता लगाने में बहुत अच्छा है, तार्किक & टाइप त्रुटियां (यह एक स्थिर प्रकार विश्लेषक है)। दोबारा, आपको कुछ erlang सीखने के लिए एक अच्छा परिचय प्रदान करता है: Dialyzer

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

+1

आप परीक्षण संदर्भ में सभी कार्यों को निर्यात कर सकते हैं, हालांकि ब्लैक बॉक्स परीक्षणों में भेद करने के लिए और भी महत्वपूर्ण है (कोई export_all अनुमति नहीं है) और सफेद बॉक्स परीक्षण (जो आप चाहते हैं)। संपादन देखें। – Pascal

+0

मैं पुष्टि करता हूं कि साइट आपको कुछ एरलांग सीखने के लिए सबसे अच्छा है। – Pascal

0
http://www.erlang.org/doc/apps/common_test/basics_chapter.html से

:

आम टेस्ट भी सफेद बॉक्स टेस्टिंग Erlang कोड के लिए एक बहुत उपयोगी उपकरण है (उदाहरण के लिए मॉड्यूल परीक्षण), के बाद से परीक्षण कार्यक्रमों Erlang कार्यों सीधे निर्यात कॉल कर सकते हैं और बहुत कम भूमि के ऊपर लागू करने के लिए आवश्यक है बुनियादी परीक्षण सूट और सरल परीक्षण निष्पादित। ब्लैक-बॉक्स परीक्षण एरलांग सॉफ़्टवेयर के लिए, एरलांग आरपीसी के साथ-साथ मानक ओ & एम इंटरफेस उदाहरण के लिए उपयोग किया जा सकता है।

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