2013-01-17 26 views
11

क्या PHPUnit के कोड कवरेज से किसी फ़ोल्डर को मजबूती से बाहर करना संभव है?फोर्स PHPUnit कोड कवरेज से फ़ाइलों को बाहर निकालें

समस्या मुझे मिली है, कि मेरे पास सिम्फनी 1.4 प्रोजेक्ट है, जिसमें फ़ोल्डर्स ./lib/vendor/symfony/* पर हैं। मैं ./lib/vendor/* के अंदर कुछ भी बाहर करना चाहता हूं - पुनरावर्ती।

अब, मैं उन्हें बाहर करना चाहता हूं कि वे मेरे परीक्षणों से पूरी तरह से कवर किए गए हों या नहीं, यानी मैं इन फ़ोल्डरों को कभी नहीं देखना चाहता हूं। तो, मैं अपने phpunit.xml कॉन्फ़िग फ़ाइल को यह बिट जोड़ दिया है, लेकिन यह कोई फर्क नहीं पड़ता कि मुझे क्या करना इन फ़ोल्डरों, बाहर करने के लिए प्रतीत नहीं होता:

<filter> 
    <whitelist> 
     <exclude> 
      <directory>./lib/vendor/*</directory> 
      <directory>./lib/vendor/symfony/lib/*</directory> 
     </exclude> 
    </whitelist> 
</filter> 

यह मेरे लिए प्रकट होता है पल कोड हिट हो जाता है और XDebug नोटिस यह, PHPUnit कोड कवरेज में शामिल होगा चाहे कोई फर्क नहीं पड़ता। इसके लिए मेरा नकारात्मक पक्ष यह है कि इस कोड का पहले से ही सिम्फनी डेवलपर्स द्वारा परीक्षण किया गया है, इसलिए मेरी कवरेज रिपोर्ट में इसे शामिल करने की आवश्यकता नहीं है, मेरी संख्याओं को गड़बड़ाना: पी

+0

आप की कोशिश की है चलाने के पथ से '*' दूर करने के लिए अच्छी तरह से काम करने के लिए लग रहा था? – j0k

+0

@ j0k हाँ मैंने कोशिश की, सबकुछ, विक्रेता, विक्रेता/विक्रेता/*, विक्रेता/*/और विक्रेता/*/* – Sarel

+1

के बारे में बस कोशिश की गई, मुझे अभी भी एक समान समस्या थी और जिस तरह से मैंने उपर्युक्त संरचना का अर्थ लिया था ** ** श्वेतसूची ** में शामिल होने से '' '' '' 'को बाहर कर दें। '' '' 'के विपरीत के रूप में ** ** ** **' '' '' ** को ब्लैकलिस्ट ** में शामिल होने से बाहर कर दिया जाएगा। – lucifurious

उत्तर

20

ठीक है, इसलिए मैंने सोचा कि आप या तो काली सूची अनुभाग या श्वेतसूची अनुभाग, पता चला है कि आप दोनों हो सकता है, तो मैं उन फ़ोल्डर काली सूची में डाला है और यह काम किया:

<filter> 
     <blacklist> 
       <directory>./lib/vendor</directory> 
       <directory>./lib/helper</directory> 
     </blacklist> 
    </filter> 
+0

अपने खुद के जवाब को स्वीकार करने के लिए मत भूलना – j0k

+0

स्वयं को नोट करें। यह के अंदर होना चाहिए ... – wormhit

+0

ब्लैकलिस्टिंग अब Php_Code_Coverage लाइब्रेरी द्वारा समर्थित नहीं है। – unherz

3

अवलोकन: श्वेत सूची बनाती (निर्देशिका आप कोड कवरेज में शामिल होना चाहते हैं) PHPUnit निष्पादन बनाता है ब्लैकलिस्टिंग की तुलना में पूरे टेस्ट सूट की तेज़ी से।

<filter> 
    <whitelist> 
      <directory>/my/project/directory/to/be/covered</directory> 
      .... 
    </whitelist> 
</filter> 

साथ परीक्षण किया गया: PHPUnit 4.5.0 और PHP 5.5.9

0

ये जवाब सब मैं PHPUnit 5.7.23 चल रहा था और मुद्दों फ़ाइलें प्राप्त करने को शामिल किया था और बाहर रखा गया PHPUnit

के पुराने संस्करणों के लिए लागू करने लगते हैं phpunit के लिए। लगता है कि syntax काफी हद तक बदल गया है और केवल आंशिक रूप से पिछड़ा संगत है। मुझे एक जटिल आवश्यकता थी जहां मुझे कोड कवरेज (इसकी एक विरासत प्रणाली) के लिए अलग-अलग निर्देशिकाओं को छोड़कर & भी शामिल करने की आवश्यकता थी।

यहाँ है कि मैं क्या phpunit.xml में आवश्यक:

<testsuites> 
    <testsuite name="Unit Tests"> 
     <directory suffix="Test.php">./tests</directory> 

     <exclude>./tests/blah/excluded_file_from_tests1.php</exclude> 
     <exclude>./tests/blah/excluded_file_from_tests2.php</exclude> 
     <exclude>./tests/blah/excluded_file_from_tests3.php</exclude> 
    </testsuite> 
</testsuites> 
<filter> 
    <whitelist processUncoveredFilesFromWhitelist="true"> 
     <directory suffix=".php">./common/lib/included_directory</directory> 
     <exclude> 
      <directory suffix=".php">./common/lib/included_directory/core/blah/excluded_directory</directory> 
     </exclude> 
    </whitelist> 
</filter> 

तो:

  • <testsuites> के तहत मैं ./tests निर्देशिका
  • लेकिन, .tests के तहत मैं फ़ाइलों का एक सेट को बाहर करना चाहता था शामिल कर रहा हूँ excluded_file_from_testsX.php
  • फिर, मैं निर्देशिकाको श्वेतसूची बनाना चाहता था
  • लेकिन, इसके तहत कुछ स्तरों के नीचे निर्देशिका शामिल है, एक निर्देशिका है जिसे मैं भी (./common/lib/included_directory/core/blah/excluded_directory) को बाहर करना चाहता था।

तो यह जब के माध्यम से phpunit --coverage-html build/coverage

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