2015-03-13 4 views
16

मैं किसी विशेष निर्देशिका के लिए phpunit के लिए कोड कवरेज सेट अप करने का प्रयास कर रहा हूं। किसी ने मुझे बता सकते हैं कि बीच का अंतर है:Phpunit कवरेज: 'addUncoveredFilesFromWhitelist' और 'processUncoveredFilesFromWhitelist' विकल्पों के बीच क्या अंतर है?

<filter> 
    <whitelist> 
     <directory suffix=".php">lib/</directory> 
    </whitelist> 
</filter> 

और

<filter> 
    <whitelist addUncoveredFilesFromWhitelist="true"> 
     <directory suffix=".php">lib/</directory> 
    </whitelist> 
</filter> 

और

<filter> 
    <whitelist processUncoveredFilesFromWhitelist="true"> 
     <directory suffix=".php">lib/</directory> 
    </whitelist> 
</filter> 

वर्तमान में पहले 2 विकल्प काम करेंगे (विभिन्न कवरेज संख्या के साथ), लेकिन तीसरा How to add uncovered files to PHPUnit code coverage report of the Yii application जैसी त्रुटियों के साथ विफल हो जाएगा।

बस phpunit से शुरू करना और इन श्वेतसूची विकल्पों के बीच मतभेदों को समझना चाहते हैं। मैंने इस पर आधिकारिक दस्तावेज़ पढ़े लेकिन मुझे यकीन नहीं है कि मैं समझता हूं।

उत्तर

23

GitHub पर php-code-coverage पैकेज के स्रोत कोड में एक झलक लेने सच्चाई का पता चलता है का उपयोग करें:

  • अगर addUncoveredFilesFromWhitelistFALSE है तो कोड कवरेज में जानकारी शामिल है लोड की गई और निष्पादित की गई फ़ाइलों के बारे में (केवल वे पंक्तियां जिनमें कोड शामिल हैं);
    इस मामले में processUncoveredFilesFromWhitelist का मूल्य अनदेखा किया गया है;
  • अगर addUncoveredFilesFromWhitelistTRUE तो सफेद सूची से फ़ाइलों को लोड और मार डाला नहीं थे भी कोड कवरेज में शामिल किया जाएगा है:
    • अगर processUncoveredFilesFromWhitelistFALSE तो फ़ाइलें किसी भी तरह से संसाधित नहीं कर रहे हैं; उनकी सभी लाइनें कोड कवरेज में दिखाई देगी क्योंकि निष्पादित नहीं की जा रही हैं, यहां तक ​​कि रिक्त रेखाएं और रेखाएं जिनमें केवल टिप्पणियां हैं; चीजों को पूरा करने के लिए यह तेज़ और गंदा तरीका है;
    • यदि processUncoveredFilesFromWhitelistTRUE है तो फ़ाइलों को शामिल किया गया है और XDebug की कोड कवरेज कार्यक्षमता का उपयोग किया जाता है (वास्तव में चलने वाली फ़ाइलों के लिए समान) रिपोर्ट में केवल कोड वाली पंक्तियों को दर्ज करने के लिए; यह धीमा कठिन कामकाजी तरीका है।

addUncoveredFilesFromWhitelist के लिए डिफ़ॉल्ट मान TRUE है और processUncoveredFilesFromWhitelist के लिए FALSE है। इसका अर्थ है श्वेतसूची की फाइलें जिन्हें कवर नहीं किया गया था (क्योंकि वे नहीं चलाए गए थे) त्वरित तरीके से और उनकी कवरेज रिपोर्ट का उपयोग करते हुए रिपोर्ट में शामिल किए गए हैं, जबकि सटीक (0%), पंक्तियों की कुल संख्या का उपयोग करके गणना की जाती है असली।

हालांकि, 0 किसी भी चीज़ से अभी भी 0% है, ऐसा लगता है कि रिपोर्ट में अनदेखी फ़ाइलों को शामिल करने का यह सबसे अच्छा तरीका है।

+0

0 300 ब्रूटो अनदेखी लाइनों की 0 लाइनों का परिणाम 0% होगा, लेकिन 0/300 कुल लाइनों की गणना को प्रभावित करता है, जो केवल 100 वास्तविक विवरण हो सकते हैं। इस प्रकार, कवरेज आंकड़ों को एकत्रित करने का त्वरित तरीका प्रदान करते समय यह वास्तविक कवरेज आंकड़ों की त्रुटि में जोड़ देता है। –

+1

@EduardSukharev उच्च कोड कवरेज रखने का लक्ष्य न बनाएं, यह सत्यापित करने का लक्ष्य है कि कोड व्यवहार विनिर्देशों से मेल खाता है। '100%' कोड कवरेज तक पहुंचना आसान है, लेकिन क्या इसका मतलब यह है कि कोड पूरी तरह से परीक्षण किया जाता है? – axiac

5

तो मुझे लगता है कि मैं गलत था। यहां बताया गया है documentation इसके बारे में क्या कहना है है:

वैकल्पिक रूप से, सभी को श्वेतसूची वाले फ़ाइलों addUncoveredFilesFromWhitelist = "true" अपने PHPUnit विन्यास में (अनुभाग "सहित और छोड़कर फ़ाइलें बुलाया देखने की स्थापना करके कोड कवरेज रिपोर्ट में जोड़ा जा सकता कोड कवरेज के लिए ")। यह उन फ़ाइलों को शामिल करने की अनुमति देता है जिन्हें अभी तक परीक्षण नहीं किया गया है। यदि आप इस बारे में जानकारी प्राप्त करना चाहते हैं कि ऐसी अनदेखी फ़ाइल की कौन सी रेखाएं निष्पादन योग्य हैं, उदाहरण के लिए, आपको अपने PHPUnit कॉन्फ़िगरेशन में प्रक्रिया अनन्यफाइलफ्रेमफ्रेटिस्टिस्ट = "सत्य" सेट करने की भी आवश्यकता है ("कोड कवरेज के लिए फ़ाइलें शामिल और बहिष्कृत" नामक अनुभाग देखें)।

तो जवाब है कि यहाँ adding खुला फ़ाइलें उन्हें कवरेज रिपोर्ट में शामिल नहीं है, लेकिन वास्तव में processing उन्हें अधिक जानकारी के लिए एकत्रित होंगे।

मूल

सेबेस्टियन से this twitter conversation देखें। ट्विटर की चतुरता से बताना मुश्किल है, लेकिन ऐसा लगता है कि addUncoveredFilesFromWhitelist एक ही कार्यक्षमता का एक पुराना रूप हो सकता है जो processUncoveredFilesFromWhitelist विरासत कोड प्रदान करता है।

चहचहाना बातचीत की विषय-वस्तु है:

@ user1: @phpunit में, addUncoveredFilesFromWhitelist के बीच का अंतर = "true" क्या और processUncoveredFilesFromWhitelist = "true"?

@s_bergmann: आप प्रक्रिया का उपयोग करना चाहते हैं अनफॉर्डेफ़ाइलफ्रॉमविटेलिस्ट।यह (विरासत कोड) काम नहीं करता है तो addUncoveredFilesFromWhitelist

संबंधित मुद्दे