मैं एरलांग के लिए नया हूं। इसमें 2 टेस्ट फ्रेमवर्क हैं: ईयूनीट और कॉमन टेस्ट। मैं एक दूसरे पर उपयोग करने के लिए उलझन में हूँ। क्या कोई मुझे समझा सकता है कि आम परीक्षा में ईयूनीट के फायदे क्या हैं, और इसके विपरीत। सीम आम टेस्ट सबकुछ कर सकता है जो यूरोपीय संघ कर सकता है और बहुत कुछ, यह सुनिश्चित नहीं है कि मुझे ईयूनीट का उपयोग करना चाहिए। धन्यवाद!ईयूनीट बनाम आम परीक्षण
उत्तर
यूनिट वास्तव में सरल है और सफेद बॉक्स स्तर पर मॉड्यूल परीक्षण या लाइब्रेरी परीक्षण के लिए बहुत अच्छा है। यह 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
Learn you some erlang (erlang के लिए सबसे अच्छा ऑनलाइन संसाधनों में से एक आधिकारिक दस्तावेज़ के अलावा) के लिए कोड काफी अच्छी तरह से दोनों तरीकों बताते हैं:
पास्कल के रूप में बताया, EUnit सबसे अच्छा व्हाइट बॉक्स परीक्षण में, और अधिक आंतरिक समारोह-दर-समारोह इकाई परीक्षण, प्रकाश एकीकरण परीक्षणों की तरह प्रयोग किया जाता है।
आम परीक्षण अधिक भारी उठाने करता है: एकीकरण & सिस्टम परीक्षण, ब्लैक-बॉक्स प्रकार की सामग्री। यह ज़्यादा जटिल है, ज़ाहिर है, और बहुत शक्तिशाली है।
जब आप इसमें हों, तो आप डायलज़र, एरलांग/ओटीपी में एक और एकीकृत परीक्षण उपकरण का प्रयास कर सकते हैं, जो मृत या पहुंचने योग्य कोड का पता लगाने में बहुत अच्छा है, तार्किक & टाइप त्रुटियां (यह एक स्थिर प्रकार विश्लेषक है)। दोबारा, आपको कुछ erlang सीखने के लिए एक अच्छा परिचय प्रदान करता है: Dialyzer।
ओह, वैसे, अगर आपने अलग-अलग फ़ाइलों (जो पूरी तरह से संभव है) में ईयूनिट परीक्षण डालना चुना है, तो आप अप्रत्याशित कार्यों (अपेक्षित) की जांच करने में सक्षम नहीं होंगे। यह भी उम्मीद की जाती है कि आम परीक्षण अप्रत्याशित कार्यों का परीक्षण नहीं करता है: अन्यथा यह एक ब्लैक-बॉक्स परीक्षण उपकरण नहीं होगा (शायद धोखाधड़ी वाला)।
आप परीक्षण संदर्भ में सभी कार्यों को निर्यात कर सकते हैं, हालांकि ब्लैक बॉक्स परीक्षणों में भेद करने के लिए और भी महत्वपूर्ण है (कोई export_all अनुमति नहीं है) और सफेद बॉक्स परीक्षण (जो आप चाहते हैं)। संपादन देखें। – Pascal
मैं पुष्टि करता हूं कि साइट आपको कुछ एरलांग सीखने के लिए सबसे अच्छा है। – Pascal
:
आम टेस्ट भी सफेद बॉक्स टेस्टिंग Erlang कोड के लिए एक बहुत उपयोगी उपकरण है (उदाहरण के लिए मॉड्यूल परीक्षण), के बाद से परीक्षण कार्यक्रमों Erlang कार्यों सीधे निर्यात कॉल कर सकते हैं और बहुत कम भूमि के ऊपर लागू करने के लिए आवश्यक है बुनियादी परीक्षण सूट और सरल परीक्षण निष्पादित। ब्लैक-बॉक्स परीक्षण एरलांग सॉफ़्टवेयर के लिए, एरलांग आरपीसी के साथ-साथ मानक ओ & एम इंटरफेस उदाहरण के लिए उपयोग किया जा सकता है।
- 1. ईयूनीट
- 2. एरलांग ईयूनीट परीक्षण मॉड्यूल जो लाइब्रेरी एप्लिकेशन
- 3. ईयूनीट और आईओ: प्रारूप
- 4. आम बनाम कोर - अंतर
- 5. ईयूनीट निजी कार्यों का परीक्षण करने में विफल रहता है
- 6. कॉचडब आम प्रदर्शन बनाम मानचित्र कम करें
- 7. निष्पादन परीक्षण बनाम यूनिट टेस्टिंग
- 8. यूआई परीक्षण बनाम यूनिट परीक्षण
- 9. रूबी बनाम स्ट्रक्चर बनाम परीक्षण
- 10. जावास्क्रिप्ट: परीक्षण बनाम exec
- 11. लोड बनाम तनाव परीक्षण
- 12. एकीकरण बनाम यूनिट परीक्षण
- 13. प्रदर्शन परीक्षण बनाम प्रोफाइलिंग
- 14. स्विफ्ट और कोरडाटा परीक्षण बनाम गैर-परीक्षण
- 15. रेल आरएसपीसी नियंत्रक परीक्षण बनाम एकीकरण परीक्षण
- 16. समतुल्य कक्षा परीक्षण बनाम सीमा मूल्य परीक्षण
- 17. प्रवेश परीक्षण बनाम अन्य सुरक्षा परीक्षण
- 18. एक एडब अपडेट का परीक्षण, बनाम बनाम?
- 19. सिस्टम परीक्षण बनाम स्वीकृति परीक्षण - परीक्षण मामलों में अंतर
- 20. आम तौर पर प्रयुक्त क्रियाओं के लिए प्रतीक बनाम पाठ
- 21. GPU बनाम आम एल्गोरिदम के लिए CPU प्रदर्शन
- 22. द एजिल वे: एकीकरण परीक्षण बनाम कार्यात्मक परीक्षण या दोनों?
- 23. जेएसयूनीट बनाम क्यूनीट बनाम XUnit बनाम यूनिट परीक्षण जावास्क्रिप्ट/JQuery
- 24. प्रदर्शन परीक्षण अपाचे बनाम नोडजे
- 25. व्यवहार बनाम राज्य आधारित परीक्षण
- 26. एंड्रॉयड परीक्षण: UIAutomator बनाम एस्प्रेसो
- 27. आम मेमोरी
- 28. SSLHandshakeException: आम
- 29. नुनिट: "आम भाषा रनटाइम एक अवैध प्रोग्राम का पता चला।"
- 30. रेल: रेक db: परीक्षण: रेक परीक्षण बनाम तैयार: तैयार
धन्यवाद पास्कल। मैंने कुछ एरलांग इंजीनियरों से बात की, मुझे मिलने का एकमात्र कारण आम_टेस्ट अप्रत्याशित कार्यों का परीक्षण नहीं कर सकता है। – user342673
यह सच नहीं है, आप स्रोत मॉड्यूल में परीक्षण एम्बेड करते हैं ताकि आप जो चाहें उसका परीक्षण कर सकें। –
मैंने एंडी टिप्पणी के बाद अपना जवाब संपादित किया है। मुझे सामान्य परीक्षण का उपयोग करने के इस तरीके से अवगत नहीं है, मैं test_SUITE.erl मॉड्यूल में परीक्षण मामलों को लिखता हूं – Pascal