2012-04-20 16 views
50

मैं जेनकींस के सिलसिले में PHPUnit का उपयोग कर रहा है, और मैं XML फ़ाइल में विन्यास की स्थापना phpunit.xmlPHPunit में परीक्षण कैसे छोड़ें?

मुझे पता है कि मैं कमांड लाइन पर उपयोग कर सकते हैं कुछ परीक्षणों को छोड़ना चाहते:

phpunit --filter testStuffThatBrokeAndIOnlyWantToRunThatOneSingleTest

मैं XML फ़ाइल में इसका अनुवाद कैसे करूं क्योंकि <filters> टैग केवल कोड-कवरेज के लिए है?

मैं आप पूरी फ़ाइल तो

<?xml version="1.0" encoding="UTF-8"?> 

<phpunit> 

    <testsuites> 
     <testsuite name="foo"> 
      <directory>./tests/</directory> 
      <exclude>./tests/path/to/excluded/test.php</exclude> 
       ^------------- 
     </testsuite> 
    </testsuites> 

</phpunit> 
+1

केओ: परीक्षण को ठीक करने के बारे में क्या? बीटीडब्ल्यू, नमस्ते से नमस्ते ;-) – zerkms

+0

मैंने परीक्षण नहीं लिखे, यह कुछ अप्रासंगिक है, और कोर फाइलों को बदलने की इच्छा नहीं है – Filype

+0

संदेह से आप ऐसा कर सकते हैं। यह एक बहुत अजीब आवश्यकता है – zerkms

उत्तर

92

परीक्षण है कि या तो टूट रहे हैं या आप की जरूरत को छोड़ने के लिए तेज और आसान तरीका अनदेखी के साथ सौदा कर सकते हैं से testStuffThatAlwaysBreaks

+0

द्वारा '@ समूह' एनोटेशन और स्प्लिट परीक्षणों का उपयोग करने की अनुशंसा करता हूं, आप हमेशा xml कॉन्फ़िगरेशन फ़ाइल में निर्देशिका या परीक्षण जोड़ सकते हैं, हालांकि, यदि यह एक नियंत्रक या समान है जो वास्तव में बहुत व्यावहारिक नहीं है क्योंकि आपके पास शायद दर्जनों हैं उस फ़ाइल में अन्य परीक्षण। मुझे लगता है कि अगर आपके पास यूनिट परीक्षणों तक कोई पहुंच नहीं है, तो सुनिश्चित नहीं है कि मैं क्यों समझता हूं, तो आपके पास बाहर करने के अलावा कोई अन्य विकल्प नहीं है। – jsteinmann

+3

चूंकि यह एक स्थैतिक विधि है (कम से कम PHPUnit 3 में), और कुछ कक्षाएं देर से स्थिर बाध्यकारी afaik का उपयोग करती हैं, तो आपको 'static :: markTestSkipped ('') का उपयोग करना चाहिए,' 'this->' 'के बजाय। यह नए PHP संस्करणों में एक चेतावनी उत्पन्न करेगा। हस्ताक्षर: 'सार्वजनिक स्थैतिक फ़ंक्शन मार्कटेस्टस्कीप ($ message =' ') ' – DanFromGermany

+0

पूर्ण इकाई परीक्षण फ़ाइल का एक बेहतर उदाहरण की आवश्यकता है। सिर्फ एक स्निपेट नहीं। – Ligemer

21

अलग सभी परीक्षण चलाने के लिए चाहते हैं पर बाद में काम जारी रखने के सिर्फ अपने व्यक्तिगत इकाई परीक्षण के शीर्ष पर निम्नलिखित जोड़ने के लिए है:

$this->markTestSkipped('must be revisited.'); 
+0

पर अपने परीक्षण चलाने की आवश्यकता नहीं थी, मैंने यह कोशिश की है, फिर भी यह कहता है कि '' और 893 परीक्षणों के बिना 893 परीक्षण '' – Filype

+0

परीक्षणों में लगभग 20 मिनट चलते हैं, क्या यह देखने का एक आसान तरीका है कि यह कितने परीक्षण चलाएगा? वर्तमान में, मुझे पहली पंक्ति पूरी होने तक प्रतीक्षा करनी है ....... 63/893 (7%) ' – Filype

+3

@ फ़ीलीपे: तो आपने शायद गलत पथ निर्दिष्ट किया है। ये मेरे लिए अच्छी तरह से काम करता है। सुनिश्चित नहीं है कि परीक्षण गिनती प्राप्त करना संभव है या नहीं। पीएस: यूनिट परीक्षण इतने लंबे समय तक नहीं चलना चाहिए। मैं उनकी प्रकृति – zerkms

8

कभी कभी यह सब छोड़ उपयोगी है ते PHP फ़ाइल के रूप में परिभाषित कस्टम स्थिति (ओं) के आधार पर विशेष फ़ाइल से एसटीएस। आप सेटअप फ़ंक्शन का उपयोग करके आसानी से ऐसा कर सकते हैं जिसमें makeTestSkipped भी काम करता है।

protected function setUp() 
{ 
    if (Config::getInstance()->myConfigCondition == false) { 
     $this->markTestSkipped('all tests in this file are invactive for this server configuration!'); 
    } 
} 

Btw PHPUnit 5.2 स्थिर official documentation पता चलता है कि आप उदाहरण के विधि, नहीं एक स्थिर पद्धति के रूप में markTestSkipped उपयोग करना चाहिए। जांच नहीं की गई कि क्या तरीके से परिभाषा बदल दी गई थी।

+0

'' 'Config''' वर्ग क्या है? मैं इसे कहां रखूं? – cronfy

+0

@ क्रोनफी यह किसी भी वैश्विक स्कोप सुलभ वर्ग (सिंगलटन/रजिस्टर डिज़ाइन पैटर्न) या यहां तक ​​कि वैश्विक चर सेट को phpunit में बूटस्ट्रैप फ़ाइल में भी हो सकता है। असल में तर्क यह है: यदि ($ testFromThisFileShouldBeSkipped) {$ this-> markTestSkipped (...); } –