2011-05-03 166 views
2

試圖決定哪一個更適合我的情況。根據phpunit文檔(這是非常有限的),白名單應該包括目錄內的所有文件,但它似乎並沒有這樣工作。有沒有人有任何建議,或可以指向我一個很好的參考,而不是phpunit手冊。我正在使用XML配置文件。提前致謝!phpunit白名單vs黑名單

<?xml version="1.0" encoding="utf-8"?> 
<phpunit> 
    <filter> 
    <whitelist> 
     <directory suffix=".php">/home/ddohr/git/project/</directory> 
    <exclude> 
     <directory suffix=".php">/home/ddohr/git/project/vendor/</directory> 
     <directory suffix=".php">/home/ddohr/git/project/plugins/</directory> 
     <directory suffix=".php">/home/ddohr/git/project/test/</directory> 
    </exclude> 
    </whitelist> 
    </filter> 
</phpunit> 
+0

它的工作原理是這樣的我:我現在使用XML文件(https://github.com/ircmaxell/PHP-CryptLib/blob/master /test/phpunit.xml.dist) – ircmaxell 2011-05-03 14:56:10

+0

排除白名單上的文件或目錄意味着如果任何文件「觸及」它,它將仍然被拉入,它只是不會自動將所有文件拉入?我的白名單目錄中有大量文件似乎並未被拉入。 – Dave 2011-05-03 14:58:38

+0

@dave:哪裏是PHPUnit根標記? testsuites標籤在哪裏?編輯您的問題以發佈您的完整XML文件... – ircmaxell 2011-05-03 15:00:50

回答

1

更新:以下不再與上面的PHPUnit 3.6和作品。有關新解決方案,請參閱Add files to code-coverage white/blacklists in bootstrap.php for PHPUnit

原來的答案

至於「白名單黑名單VS」問題,注意它們是相互排斥的,白名單勝於黑名單。我們在項目中使用白名單,因爲我們希望在沒有測試的情況下報告0%的覆蓋率。我們的bootstrap.php模塊將白名單設置爲比當時在phpunit.xml中更易於管理。

例如,庫項目的bootstrap.php使用includeDirectoryForCodeCoverage()其源添加到白名單:

includeDirectoryForCodeCoverage(MY_LIBRARY_PATH); 

這是抽象的實際調用PHP_CodeCoverage一個簡單的輔助:

function includeDirectoryForCodeCoverage($path) { 
    PHP_CodeCoverage_Filter::getInstance() 
      ->addDirectoryToWhitelist($path); 
} 

function includeFileForCodeCoverage($path) { 
    PHP_CodeCoverage_Filter::getInstance() 
      ->addFileToWhitelist($path); 
} 

function includeFilesForCodeCoverage(array $paths) { 
    PHP_CodeCoverage_Filter::getInstance() 
      ->addFilesToWhitelist($paths); 
} 

黑名單但是,仍然很方便。 PHPUnit將隱藏黑名單文件中任何代碼的堆棧跟蹤條目。對於這個原因,我加入這個小寶石:

function ignoreDirectoryInStackTraces($path) { 
    PHP_CodeCoverage_Filter::getInstance() 
      ->addDirectoryToBlacklist($path); 
} 
+0

PHPUnit 3.6中刪除了「PHP_CodeCoverage_Filter :: getInstance」(並且基於非基於XML的黑名單設置成爲了屁股中的一個巨大痛苦)。 – Tgr 2012-03-02 17:10:55

+0

有關在3.6.x及更高版本中運行的解決方案,請參見[將文件添加到'bootstrap.php中的代碼覆蓋白名單/黑名單for PHPUnit](http://stackoverflow.com/q/8085674/285873)。 – 2012-03-02 21:46:56