2013-02-12 46 views
27

मैं एसओ और Google के आसपास देख रहा हूं, लेकिन मुझे वास्तव में एक निश्चित उत्तर नहीं मिल सका।PHPUnit और Behat; पूरक या विकल्प?

PHPUnit जुनीट की तरह unittesting के लिए एक ढांचा है। मैं इसे कार्यात्मक परीक्षण के लिए सेलेनियम-एक्सटेंशन के संयोजन में भी उपयोग करता हूं। जब मैं चारों ओर ब्राउज़ करता हूं तो बेथ/मिंक का उल्लेख होने पर रहता है। लेकिन मैं पूरी तरह से समझ नहीं पा रहा हूं कि बेथ यहां कैसे फिट बैठता है।

बेथ के साथ आप मानव-पठनीय प्रारूप में परिदृश्य लिखते हैं। फिर बेथ इसे एक नई परियोजना के लिए कंकाल कक्षाओं में अनुवाद कर सकते हैं? लेकिन क्या यह बिना किसी चीज के कंकाल कक्षाएं भी प्रदान करता है? क्या आप बेहाट का उपयोग करके unittests लिखते हैं, या आप उन लोगों के लिए PHPUnit/SimpleTest का उपयोग करेंगे?

लेकिन फिर बेथ/मिंक कार्यात्मक परीक्षण के लिए PHPUnit_Selenium-extension को प्रतिस्थापित करता है?

क्या आप केवल नई परियोजनाओं के लिए बेहत का उपयोग करते हैं, या इसे मौजूदा परियोजनाओं में भी अनुकूलित किया जा सकता है?

उत्तर

12

हां, मैं सामान्य कोड परीक्षण और ब्राउज़र स्वचालन का उपयोग करके कार्यात्मक परीक्षण के लिए, दोनों को phpUnit का विकल्प मानता हूं।

सामान्य परीक्षण के लिए, phpUnit एक अधिक अच्छी तरह से स्थापित उत्पाद है, जबकि बीट "बीडीडी" पद्धति (व्यवहार संचालित डिजाइन) का उपयोग करके लिखे गए परीक्षणों पर केंद्रित है। phpUnit में बीडीडी विशेषताएं भी हैं, लेकिन बेथ उस शैली की ओर अधिक लक्षित है।

चूंकि हम यूनिट परीक्षणों के बजाए कार्यात्मक ब्राउज़र परीक्षणों के बारे में बात कर रहे हैं, इसलिए आप शायद कुछ अधिक शक्तिशाली यूनिट परीक्षण सुविधाओं के बारे में सोच नहीं रहे हैं; आप बस ब्राउज़र स्वचालन लिखना चाहते हैं। इसके लिए, आप वास्तव में दो सूटों में से जो भी सबसे अच्छा चुन सकते हैं।

सूक्ष्म किनारे-मामले हैं जहां उनमें से प्रत्येक के पास दूसरी तरफ ताकत है, लेकिन ज्यादातर मामलों में वे दोनों विभिन्न ब्राउज़रों में टेस्ट स्क्रिप्ट चलाने में सक्षम हैं।

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

यह भी मूल्यवान है कि बेल्ट के बिना मिंक का इस्तेमाल अपने आप में किया जा सकता है, अगर आप बीडीडी स्टाइल टेस्ट नहीं लिखना चाहते हैं।

+0

तो, बीडीडी के लिए किसी भी विचार के बिना किए गए मौजूदा एप्लिकेशन के लिए, आप PHPUnit का उपयोग करेंगे? और एक नई परियोजना के लिए, बीडीडी का उपयोग करके, बेथ पसंद करते हैं? – qrazi

+0

मिंक के लिए मैंने जो प्राथमिकता दी थी वह मुख्य रूप से इसकी लचीलापन के कारण कार्यात्मक ब्राउज़र परीक्षण स्क्रिप्ट लिखने के सवाल का जवाब दे रही थी। मैंने बीडीडी पहलू का जिक्र किया था, लेकिन मैंने जवाब के जवाब में वास्तव में इसे नहीं लिया। अपने लिए, मैं कार्यात्मक परीक्षण के लिए यूनिट परीक्षण और मिंक/साही के लिए phpUnit का उपयोग कर रहा हूं। – SDC

+2

PHPSpec एक BDD तरह से PHPUnit का काम करता है (लेकिन हम जावास्क्रिप्ट के लिए हमारी कार्यात्मक परीक्षण, चलती परीक्षण स्क्रिप्ट और ब्राउज़र के बीच सॉफ्टवेयर की परतों की संख्या कम करने पर विचार कर रहे) ... उनका कहना है [PHPSpec के लिए – ottsch

32

मैं बीट को पूरक PHPunit पर मानता हूं। मेरा मतलब है परीक्षण परीक्षण के लिए Behat का उपयोग करके पूरक, परीक्षण कोड के लिए PHPUnit। बीडीडी/टीडीडी का उपयोग करके, पहले उपयोगकर्ता-कहानी के आधार पर एक परीक्षण लिखना होगा। परीक्षण पास करने के लिए, आप आम तौर पर बीडीडी परीक्षण पास करने में सक्षम होने के लिए टीडीडी का उपयोग करके कई PHPUnit परीक्षण लिखेंगे।

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

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

+0

बहुत स्पष्ट। धन्यवाद! –

+1

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

5

इस उत्तर के साथ सभी गलत लगता है।

PHPUnit इकाई परीक्षण है, और उस से यह TDD का पालन करता है।

phpspec और Behat एक कार्यात्मक परीक्षण है, इसलिए यह BDD है।

वे एक दूसरे के पूरक, एक आदर्श परिदृश्य एक परियोजना जहां testings के दोनों प्रकार है हो सकता है, लेकिन यह केवल बड़ी परियोजनाओं है कि ऐसा करने के लिए खर्च कर सकते हैं के लिए प्रतिबंधित कर सकता है।

TDD परीक्षण एकल या सिर्फ कक्षाओं के एक जोड़े। बीडीडी आपके आवेदन में कई मॉड्यूल में एक पूर्ण सुविधा का परीक्षण करता है।

+6

Phpspec यूनिट परीक्षण कोई कार्यात्मक नहीं है !! – user3746259