सरलतम बनाम PHPunit


127

मैं सोच रहा था कि क्या किसी को भी इस दोनों सामानों में अनुभव है कि दोनों के बीच महत्वपूर्ण अंतर पर कुछ प्रकाश डाला जा सकता है अगर कोई?

प्रत्येक की कोई विशिष्ट ताकत जो इसे किसी विशिष्ट मामले के लिए उपयुक्त बनाती है?


मैं PHPUnit के लिए जाऊँगा यह बहुत बेहतर है
बपतिस्मा

9
... और क्यों? अपने उत्तर की व्याख्या करने का प्रयास करें, संसाधन / लिंक / उदाहरण प्रदान करें।
मैनुअल

<Snark> दोनों क्यों नहीं? </ snark>
Agi Hammerthief

जवाबों:


90

यह प्रश्न काफी दिनांकित है, लेकिन जैसा कि यह अभी भी ट्रैफ़िक प्राप्त कर रहा है और मैं इसका उत्तर देता हूं, हालांकि मैं अपनी बात यहां फिर से बताता हूं, इसलिए मैंने पहले ही इसे कुछ अन्य (नए) प्रश्नों पर कर दिया है।

मैं कर रहा हूँ वास्तव में बहुत विस्मित कर कि SimpleTest अभी भी PHPUnit के लिए एक विकल्प माना जाता है। शायद मैं गलत सूचना दे रहा हूँ लेकिन जहाँ तक मैंने देखा है:

  • PHPUnit मानक है; अधिकांश फ्रेमवर्क इसका उपयोग करते हैं (जैसे Zend फ्रेमवर्क (1 & 2), केक, Agavi, यहां तक ​​कि Symfony अपने खुद के फ्रेमवर्क को Sympony 2 में phpunit के लिए छोड़ रहा है)।
  • PHPUnit को हर PHP IDE (ग्रहण, नेटबीन्स, ज़ेंड स्टुइड, PHPStorm) में एकीकृत किया गया है और अच्छी तरह से काम करता है।
  • सरलतम में PHP 5.1 (उर्फ पुराना) के लिए एक ग्रहण विस्तार है और कुछ नहीं।
  • PHPUnit हर निरंतर एकीकरण सर्वर के साथ ठीक काम करता है क्योंकि यह कोड कवरेज और परीक्षण रिपोर्ट के लिए सभी मानक लॉग फ़ाइलों को आउटपुट करता है।
  • सरलतम नहीं है। हालांकि यह शुरू करने के लिए एक बड़ी समस्या नहीं है, जब आप "बस परीक्षण" बंद कर देते हैं और सॉफ़्टवेयर विकसित करना शुरू कर देते हैं तो बड़ा समय आपको काट देगा (हाँ यह कथन उत्तेजक है :) इसे बहुत गंभीरता से न लें)।
  • PHPUnit सक्रिय रूप से बनाए रखा है, स्थिर है और हर कोडबेस, हर परिदृश्य और हर तरह से आपके परीक्षण लिखने के लिए महान काम करता है।
  • (विषय) PHPUnit Simpletest की तुलना में बहुत अच्छे कोड कवरेज रिपोर्ट प्रदान करता है
  • PHPUnit के साथ आप अपने IDE ( Netbeans , Eclipse, ...) के अंदर भी ये रिपोर्ट प्राप्त कर सकते हैं:
  • इसके अलावा एक के लिए सुझाव के एक जोड़े हैं web interface to phpunit tests

मैंने अभी तक SimpleTest के पक्ष में कोई तर्क नहीं देखा है। PHPUnit नाशपाती के माध्यम से उपलब्ध होने के बाद इसे स्थापित करना आसान नहीं है:

pear channel-discover pear.phpunit.de
pear install phpunit/PHPUnit

और "पहला परीक्षण" बहुत समान दिखता है।

के रूप में PHPUnit 3.7यह सिर्फ इसे का उपयोग करके इसे स्थापित करने के लिए और भी आसान हैPHAR Archive

wget http://pear.phpunit.de/get/phpunit.phar
chmod +x phpunit-3.7.6.phar

या फ़ार डाउनलोड करने और चलाने के लिए विंडोज़ के लिए :

php phpunit-.phar

या समर्थित संगीतकार का उपयोग करते समय जैसे तरीके स्थापित करें

"require-dev": {
    "phpunit/phpunit": "3.7.*"
}

अपने संगीतकार को।


PHPUnit का परीक्षण करने के लिए आपके पास जो कुछ भी है, उसके लिए एक समाधान होगा और आप कहीं भी बहुत अधिक मदद पाएंगे (इसलिए, freenode पर SO (#phpunit irc चैनल, हर बहुत php डेवलपर;);

कृपया मुझे सही करें अगर मैंने कुछ गलत कहा है या कुछ भूल गया है :)

PHP परीक्षण उपकरणों का अवलोकन

वीडियो: http://conference.phpnw.org.uk/phpnw11/schedule/sebastian-bergay/

स्लाइड्स: http://www.slideshare.net/sebastian_bergmann/the-php-testers-toolbox-os-days-2011

इसमें एटम जैसे सामान का उल्लेख है जो अपने आप को कहता है: "PHP के लिए एक सरल, आधुनिक और सहज इकाई परीक्षण रूपरेखा!"


पूरा खुलासा

मैंने मूल रूप से यह उत्तर जनवरी 2011 को लिखा है, जहां मेरा किसी भी PHP परीक्षण परियोजना से कोई संबंध नहीं था। तब से मैं PHPUnit में योगदानकर्ता बन गया।


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

1
"> चूंकि यह php के साथ बहुत जरूरी है" - मैं इस पर दृढ़ता से असहमत हूं। मुझे अभी तक किसी भी php प्रोजेक्ट (या फ्रेमवर्क) को देखना है जो ब्राउज़र के माध्यम से अपने परीक्षण चलाता है। यह वास्तव में लाभ नहीं होने के लिए बहुत सारी समस्याएं पैदा करता है। कई बार एफ़टीपी कोड एक साझा होस्टिंग सिस्टम पर विकसित किया गया था जिसमें एफ़टीपी सिंक का उपयोग करके मृत और चला गया ( उंगलियों को पार किया गया ) और नहीं, यहां तक ​​कि छोटे, प्रोजेक्ट के लिए एक रनिंग वेब सर्वर (बॉक्स से अधिकांश एक php जहाजों पर) की आवश्यकता होती है। एक ब्राउजर के माध्यम से UNIT टेस्टिंग और न कि cli या एक IDE ऐसा ही एक दुर्लभ उपयोग मामला है जो मुझे नहीं लगता कि यह बिल्कुल भी मायने रखता है।
एडोरियन

13
PHPUnit पर SimpleTest पर विचार करने का एक मजबूत कारण यह है कि उत्तरार्द्ध एक कमांड लाइन उपकरण है जिसे परीक्षण चलाने वाले सर्वर पर स्थापित किया जाना चाहिए जो कि कई बार includeSimpleTest .PHP फ़ाइलों (अन्य के रूप में समझाया गया है) की तुलना में बहुत अधिक कठिन है इमारत का निर्माण कर पेशेवर प्रोग्रामर अपने स्वयं के परीक्षण वातावरण PHPUnit के लिए हरा करने के लिए कठिन लगता है, लेकिन अगर एक PHP आधारित खुला स्रोत अनुप्रयोग में एक परीक्षण प्रणाली को एकीकृत जहां "डेवलपर्स" अनुप्रयोग के लिए सबसे अच्छे रूप में हो सकता है (मैं क्या कहते हैं) "व्यावसायिक प्रोग्रामर" तो SimpleTest की सादगी एक असली अपील है, मेरे लिए वैसे भी। FWIW।
माइकस्किंकल

2
@ मायकेसिंकेल मैं अधिक सहमत नहीं हो सका। हमने अपने bespoke एप्लीकेशन फ्रेमवर्क के लिए SimpleTest को एक एकीकृत ब्राउज़र आधारित परीक्षण समाधान के रूप में उपयोग किया। यह हमेशा उपलब्ध था, और एक svn पुल से परे कोई स्थापना कॉन्फ़िगरेशन की आवश्यकता नहीं थी क्योंकि यह फ्रेमवर्क के स्रोत में शामिल था। हम सीआईएस एकीकरण के लिए PHPUnit में चले गए। क्योंकि हम एक विंडोज शॉप हैं, PHPUnit स्थापित करने और कॉन्फ़िगर करने के लिए एक बुरा सपना हो सकता है, और हमारे कई जूनियर डेवलपर्स केवल पर्यावरण को तोड़ने या परीक्षण करने की इच्छा खो देते हैं।
गैविन

1
स्लाइड्स का लिंक टूट गया है।
दिमित्री ज़ैतसेव

35

मैं अब PHPUnit को पसंद करता हूं, लेकिन जब मैंने शुरू किया तो मैंने SimpleTest का उपयोग किया क्योंकि मेरे पास हमेशा कमांड लाइन तक पहुंच नहीं थी। SimpleTest अच्छा है, लेकिन केवल एक चीज यह वास्तव में PHPUnit पर है, मेरी राय में, वेब धावक है।

PHPUnit मुझे पसंद है कारण यह है कि यह अन्य PHP डेवलपर टूल जैसे कि फ़िंग (जैसा कि SimpleTest), phpUnderControl , और Xinc के साथ एकीकृत करता है । 3.0 संस्करण के रूप में यह नकली है समर्थन, सक्रिय रूप से विकसित किया जा रहा है, और प्रलेखन उत्कृष्ट है।

वास्तव में अपने लिए इस प्रश्न का उत्तर देने का एकमात्र तरीका दोनों को एक समय के लिए आज़माना है, और देखें कि आपकी शैली कौन सी बेहतर है।

संपादित करें: फ़िंग अब सिंपलटेस्ट के साथ भी एकीकृत करता है।


4
बस एक नोट, फ़िंग की वेबसाइट का कहना है कि यह
सिम्पलेस्टेस्ट

18
  • मुझे समझ नहीं आया कि PHPUnit को कैसे डाउनलोड और इंस्टॉल किया जाए।
  • हालाँकि, मैं आसानी से समझ सकता हूँ कि कैसे SimpleTest स्थापित किया जाए।

    (जहाँ तक मुझे याद है PHPUnit के निर्देशों ने कहा कि "PEAR के माध्यम से इसे स्थापित करें और हम इसे किसी अन्य तरीके से कैसे करें" पर कोई निर्देश नहीं देंगे:)

  • http://www.phpunit.de/manual/current/en/installation.html

के लिए SimpleTest , बस इसे डाउनलोड करने और अपने कोड से यह उल्लेख किया है।

इसलिए सिंपलटेस्ट मेरे लिए जीता।


4
मुझे लगता है कि जब से आपने अपना उत्तर पोस्ट किया है, तब से प्रलेखन बदल गया है। आज, आप केवल 3 कमांड टाइप करते हैं और इसे इंस्टॉल किया जाएगा, आपको स्वयं कुछ भी डाउनलोड करने की आवश्यकता नहीं है।
एंटी वीराना

5
आप PEU के माध्यम से PHPUnit स्थापित कर सकते हैं, इसे मैन्युअल रूप से डाउनलोड कर सकते हैं या जीथब से नवीनतम कोड खींच सकते हैं। होमपेज पर निर्देशों को स्थापित करने के लिए एक स्पष्ट लिंक है। SimpleTest केवल मुझे एक विकल्प देता है, जो स्रोत के रूप में इंगित करता है और यह विज्ञापनों का असंख्य है ...
Potherca

1
विंडोज के तहत, PHPUnit स्थापित करने के लिए एक दर्द है। मुझे इसे 2 वर्कस्टेशन पर स्थापित करना था। पहले वाले को 3 घंटे लगे, PEAR IRC चैनल की मदद से। दूसरे के लिए (वही ओएस) मैं कभी सफल नहीं हुआ। कहा कि, लिनक्स पर यह एक आकर्षण है।
FMaz008

1
SimpleTest +1 उपयोग करने के लिए आसान स्थापित करने के लिए आसान है। PHPUnit, हालांकि, मेरी जरूरतों को पूरा करने के लिए सबसे सरल है।
Cheung

'09 के बाद से चीजें बदल गई होंगी, लेकिन विंडोज़ पर कुछ ही कमांडों के साथ PHPUnit सेकंड में स्थापित हो गया।
साइपर


13

स्वीकृत उत्तर में उल्लेखित बिंदुओं में से आधे सरल नहीं हैं:

सरलतम है

  • आसान सेटअप (फ़ोल्डर में शामिल करें, शामिल करें और चलाएँ)
  • बस संस्करण नियंत्रण में फ़ोल्डर की जाँच करें (आजकल phpunit के साथ करने की कोशिश :))
  • कम निर्भरता और बहुत सारे एक्सटेंशन (वेबस्टर, फॉर्मटेस्टर, ऑर्किटेक्ट)
  • एक अच्छा कोड कवरेज रिपोर्टर, जो विस्तार करना आसान है (डॉट्स, फ़ंक्शन नाम, रंग)
  • एक कोड कवरेज सारांश (अंततः PHPUnit 4.x में उतरा)
  • एक सभ्य वेब धावक और एक अजाक्स वेब धावक, समूह और एकल फ़ाइल निष्पादन के साथ
  • अभी भी बेहतर अंतर उपकरण (कोई व्हाट्सएप या न्यूलाइन समस्याओं के साथ)
  • एडेप्टर / रैपर को SimpleTests को phpUnit द्वारा चलाने के लिए और इसके विपरीत
  • अनुकूलता PHP5.4 +

निचे कि ओर:

  • उद्योग मानक (PHPUnit) नहीं
  • सक्रिय रूप से बनाए रखा नहीं

1
फिर भी मेरे और मेरे बॉस php4 सर्वर के लिए उपयोगी ^ ^ "
javier_domenech

धन्यवाद। मैंने नए PHP संस्करणों के साथ काम करने के लिए SimpleTest के कोड आधार को अपग्रेड किया है और वर्ष के दौरान कुछ और ट्वीक आने वाले हैं। - PHP4 युगों से ईओएल है और इसे कोई सुरक्षा पैच नहीं मिलता है। मैं अब इसका बाहरी सेवाओं पर उपयोग नहीं करूंगा। आपको अपने बॉस को कम से कम v5.5 या बेहतर v5.6 पर अपडेट चलाने की अनुमति देने के लिए राजी करना चाहिए: php.net/supported-versions.php#php-5.6
Jens A. Koch

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

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

SimpleTest में अधिक लचीलापन है कि आप अपने टेस्ट सूट को कैसे सेटअप करते हैं क्योंकि आप इसे php कोड में कर सकते हैं। तो आपके पास अपने निपटान में एक पूर्ण प्रोग्रामिंग भाषा है, न कि केवल xml कॉन्फिग फाइल्स और टर्मिनल पैरामीटर। PHPUnit को उपकरणों द्वारा अधिक समर्थन दिया जा सकता है, लेकिन PHP समुदाय किस तरह से हीन चीजों को चुनना चाहता है, इसके बारे में अधिक बताता है।
still_dreaming_1

8

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

तो, मैं कहूंगा कि SimpleTest की एक ताकत यह है कि यह बहुत हल्का वजन और पोर्टेबल है।

SimpleTest एक बहुत ही सरल HTML GUI के साथ भी जहाज करता है, जिसे यदि आप चाहते हैं तो विस्तारित करना काफी आसान है। जहाँ तक मुझे पता है, PHPUnit में HTML GUI शामिल नहीं है, लेकिन वहाँ GUI: s डाउनलोड करने के लिए उपलब्ध हैं, जैसे कि कूल


आह, यार मैंने इसे पूरी तरह से दुर्घटना से उतारा और अगले दिन तक इसका एहसास भी नहीं हुआ। अब मेरा वोट लॉक हो गया है ... सॉरी।
still_dreaming_1

8

वैसे मैंने एक phpUnit वेब आधारित UI टेस्ट केस रनर बनाया है और इसे sourceforge पर उपलब्ध कराया है। अजाक्स का उपयोग करता है और साथ ही साथ अगर आप इसे एक शॉट देना चाहते हैं तो इसे सोर्सफेज में भी दें। प्रोजेक्ट का नाम phpunitwebui है और वेबसाइट http://phpunitwebui.sourceforge.net/ है


4

जैसा कि यह बताया गया है, यह ज्यादातर वरीयता पसंद है, क्योंकि दोनों ही आपके द्वारा लिखे गए परीक्षणों को चलाएंगे और परिणामों की रिपोर्ट करेंगे।

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


मुझे यह विश्लेषण नहीं मिला। क्या आप कह रहे हैं कि आप स्थानीय अपाचे सेटअप के बजाय phpunit के लिए ग्रहण प्लगइन के माध्यम से ब्राउज़र-प्रकार की कार्यक्षमता का परीक्षण करेंगे?
काजकाई

नहीं, मैं कह रहा हूं कि मेरी परियोजना में, जैसा कि कोई ब्राउज़र-प्रकार की कार्यक्षमता नहीं है, मैं ग्रहण के माध्यम से phpunit का उपयोग कर रहा हूं।
T0xicCode

2

यह एक बहुत ही आरामदायक PHP डेवलपर के दृष्टिकोण से है:

PHPUnit को समझने में मुझे दो दिन लगे, ज्यादातर मैं ग्रहण के तहत डिबग करने की कोशिश कर रहा था कि आखिरकार मैंने हार मान ली।

ग्रहण के तहत डिबग सहित सिंपलस्ट को सेटअप करने में मुझे दो घंटे का समय लगा।

हो सकता है कि मुझे भविष्य में Simpletest की कमी मिल जाएगी लेकिन अभी तक मुझे अच्छी तरह से यह करना चाहिए: TestClasses, Mock ऑब्जेक्ट्स, टेस्ट-कोड डीबगिंग और स्थिति के त्वरित स्नैपशॉट के लिए वेब इंटरफ़ेस।

फिर से: यह एक बहुत ही आकस्मिक PHP उपयोगकर्ता के दृष्टिकोण से (यहां तक ​​कि डेवलपर :-) भी नहीं)


1

मैंने कुछ समय के लिए सरल परीक्षण की जाँच नहीं की है, पिछली बार इसमें एक ग्रहण प्लगइन था, जो मेरे लिए एक प्रमुख कारक है, लेकिन यह लंबे समय तक अद्यतन नहीं किया गया है। सेबस्टियन बर्गमैन अभी भी PHPUnit पर बहुत सक्रिय रूप से काम कर रहा है, लेकिन इसमें अभी भी ग्रहण के लिए एक अच्छा प्लगइन नहीं है - लेकिन यह नए Zend Studio के लिए शामिल है।


1

यह प्रश्न पुराना है, लेकिन मैं अपने अनुभव को जोड़ना चाहता हूं: PHPUnit अब मानक लगता है, लेकिन यदि आप एक विरासत प्रणाली के साथ काम करते हैं जो बहुत सारे और वैश्विक चर का उपयोग करता है, तो आप गेट से अटक सकते हैं। ऐसा लगता है कि PHPUnit में वैश्विक संस्करणों के साथ परीक्षण करने का कोई अच्छा तरीका नहीं है, आपको लगता है कि आपके चर को $ GLOBALS के माध्यम से सेट करना होगा जो कि कोई अच्छा नहीं है अगर आपके पास हर जगह वैश्विक चर सेट करने वाली फाइलें हैं। ठीक है, कुछ कह सकते हैं कि समस्या विरासत प्रणाली में है लेकिन इसका मतलब यह नहीं है कि हम ऐसी प्रणाली पर परीक्षण नहीं कर सकते। SimpleTest के साथ ऐसी बात सरल है। मुझे लगता है कि अगर PHPUnit हमें किसी भी वर्ग / फ़ंक्शन स्कोप के भीतर नहीं बल्कि विश्व स्तर पर एक फ़ाइल को शामिल करने की अनुमति देता है, तो यह बहुत अधिक समस्या नहीं होगी।

एक और आशाजनक समाधान है http://www.enhance-php.com , अच्छा लग रहा है :)


मैं हमेशा बस <phpunit backupGlobals="false">कॉन्फ़िगर XML में उपयोग किया है और परीक्षण में globals के साथ कोई समस्या नहीं थी ...
Potherca

@ mr1031011 आपका लिंक कहीं उपयोगी नहीं है। शायद आपका मतलब ?: github.com/Enhance-PHP/Enhance-PHP
user12345

@Potherca मुझे इसके बारे में बताएं - मुझे शुरू में एक विरासत कोड परियोजना में ग्लोबल्स के साथ बहुत सारी समस्याएं थीं, और मुझे लगता है कि मैंने सभी एनोटेशन @backupGlobals @backupStaticAttributes @runSeparateProcess @preserveGlobalState, global $xxxऔर इसके सभी संयोजनों की कोशिश की --no-globals-backupऔर अचानक सभी को देखने से पहले उम्मीद के मुताबिक काम करना। : डी
शंकु

-2

जब एक बार में परीक्षण करने के लिए हजारों कार्य होते हैं, तो फ़पुनिट जाने का तरीका है, सरल परीक्षण कम हो रहा है क्योंकि यह वेब आधारित है।

मैं अभी भी छोटे पैमाने पर परीक्षण के लिए सरल वेब का उपयोग कर रहा हूं।

लेकिन दोनों अच्छे हैं


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