2011-12-07 20 views
16

इकाई के लिए PHPUnit का उपयोग कर मेरे कार्यों का परीक्षण जब कभी किसी चेतावनी के कोड परीक्षण स्क्रिप्ट है कि कार्यों के लिए निष्पादित नहीं किया जाएगा में आता है, किसी को भी मुझे बता सकते हैं कि कैसे चेतावनी की अनदेखी करने और परीक्षणPHPUnit में पीएचपी चेतावनी की उपेक्षा कर

के साथ आगे बढ़ना Am
+10

मुझे लगता है कि इकाई परीक्षण एकदम सही ढंग से काम कर रहा है:

निम्नलिखित कोड PHPUnit documentation से उदाहरण है। कोड को ठीक करें ताकि यह चेतावनियां या त्रुटियों को फेंक न सके। – JJJ

+0

@ जुहाना: मुझे केवल फ़ंक्शन का मूल्य वापसी की आवश्यकता है, जो चेतावनियों से संबंधित नहीं है। परीक्षण जो परीक्षण कर रहा है ठीक काम कर रहा है। –

+1

एक टीम के कामकाजी संदर्भ में आपको कभी-कभी अपने स्वयं के बंडल का परीक्षण करना पड़ता है, और आपके पास अन्य बंडलों को साफ करने के लिए समय/प्रमाण-पत्र/मिशन नहीं होता है (जो केवल चेतावनियों को फेंक सकता है क्योंकि उन्हें भी बुलाया नहीं जाता है) ताकि "ठीक करें कोड "टिप्पणी अप्रासंगिक प्रतीत होती है जब आप केवल एक विशिष्ट फ़ंक्शन का परीक्षण करना चाहते हैं। – Xmanoux

उत्तर

28

जैसा कि जुहाना ने टिप्पणी की थी, आपको सबसे पहले अपने कोड को ठीक करना चाहिए जहां चेतावनी दिखाई दे रही है। यह एक संकेत है कि कोड ठीक से/कड़ाई से काम नहीं कर रहा है।

डिफ़ॉल्ट रूप से, PHPUnit PHP त्रुटियों, चेतावनियों और नोटिस को परिवर्तित करता है जो किसी अपवाद के परीक्षण के निष्पादन के दौरान ट्रिगर किए जाते हैं।

Testing PHP Errors जो अधिक जानकारी आपके चेतावनी (और कैसे उप दिनचर्या आप परीक्षण में फोन में चेतावनी की अनदेखी करने) के लिए परीक्षण करने के लिए कैसे है देखें।

डिफ़ॉल्ट व्यवहार को अक्षम करने के लिए, आप PHPUnit को अपने परीक्षणों में ऐसा करने के लिए बता सकते हैं, उदा।

# Warning: 
PHPUnit_Framework_Error_Warning::$enabled = FALSE; 

# notice, strict: 
PHPUnit_Framework_Error_Notice::$enabled = FALSE; 

डिफ़ॉल्ट व्यवहार को बदलने के लिए एक अन्य विकल्प निम्न सेटिंग के साथ configure the testrunner with an XML file के लिए है::

<phpunit convertErrorsToExceptions="false" 
     convertNoticesToExceptions="false" 
     convertWarningsToExceptions="false"> 
</phpunit> 

ये अपने परीक्षण के setUp या परीक्षण ही ग्लोबल नेम स्पेस में एक स्थिर चर सेट करके भीतर कमांड लाइन स्विच के रूप में तीन विकल्प उपलब्ध नहीं हैं।

साथ ही संबंधित प्रश्न भी देखें: test the return value of a method that triggers an error with PHPUnit

+0

धन्यवाद "यह" नोटिस, सख्त: PHPUnit_Framework_Error_Notice :: $ सक्षम = गलत; " –

+2

मैंने vfsStream के साथ कुछ फ़ाइल संचालनों का परीक्षण करने के लिए इसका उपयोग करने का प्रयास किया। PHP_Unit अपवादों को अक्षम करने से काम नहीं हुआ (कुछ chmod() की आवश्यकता है जो समर्थित नहीं हैं)। मुझे अच्छे पुराने चुप्पी ऑपरेटर '@' का उपयोग करने के बाद करना होगा। – Zap

2

प्रति-परीक्षण स्तर पर ऐसा करने के लिए प्रलेखित रणनीति @ त्रुटि दमन ऑपरेटर का उपयोग करना है जब आपका परीक्षण उस कार्य को कॉल करता है जो चेतावनी या नोटिस को ट्रिगर करेगा।

<?php 
class ErrorSuppressionTest extends PHPUnit_Framework_TestCase 
{ 
    public function testFileWriting() { 
     $writer = new FileWriter; 
     $this->assertFalse(@$writer->write('/is-not-writeable/file', 'stuff')); 
    } 
} 
class FileWriter 
{ 
    public function write($file, $content) { 
     $file = fopen($file, 'w'); 
     if($file == false) { 
      return false; 
     } 
     // ... 
    } 
}