2013-05-20 57 views
0

我所有的代碼庫位於一個文件夾中,它是子目錄,我所有的測試都位於另一個文件夾中,並且它是子目錄。當我運行PHPUnit時,我將它指向了測試文件夾,並且我的測試文件夾中的所有文件以及所有以Test.php結尾的子目錄都被執行。這一切工作正常。PHPUnit和PHP_CodeCoverage:爲整個代碼庫啓用PHP_CodeCoverage

我現在想爲我的所有代碼庫啓用PHP_CodeCoverage,包括我還沒有寫過測試文件的文件。

我能夠做手動啓用PHP_CodeCoverage每個測試文件裏面有什麼GitHub的文件建議:

我的測試文件中包括我的follwoing:

require 'PHP/CodeCoverage/Autoload.php'; 

$coverage = new PHP_CodeCoverage; 
$coverage->start('<name of test>'); 

// ... 

$coverage->stop(); 

$writer = new PHP_CodeCoverage_Report_Clover; 
$writer->process($coverage, '/tmp/clover.xml'); 

$writer = new PHP_CodeCoverage_Report_HTML; 
$writer->process($coverage, '/tmp/code-coverage-report'); 

如何啓用它爲我整個代碼庫?我找不到這種情況下的任何文件。

回答

0

我想通了自己:

當從命令行運行PHPUnit,目錄之前的任何地方添加下面的開關在其上運行PHPUnit: --coverage-html /your/coverage/directory/goes/here

下面是完整的例子命令:

$phpunit --colors --coverage-html /your/coverage/directory/goes/here /my/code/base/dir

+1

的是,如果某些文件沒有任何測試中使用的覆蓋面將不顯示它們。爲了確保你應該在phpunit.xml中添加'addUncoveredFilesFromWhitelist =「true」'tou your'whitelist'標籤(如果有的話) – robertboloc

+0

感謝您的補充信息。我已經注意到你剛纔提到的內容,但是在每個文件中不必手動調用code_coverage對我的目的來說已經是一個巨大的改進。當我只是將目錄傳遞給phpunit時,我無法獲得phpunit.xml文件的工作,我是否錯過了某些內容? – DudeOnRock

+0

通常如果文件名爲phpunit.xml,並且位於您調用phpunit的目錄中,它將自動檢測到,如果不是的話,您可以使用-c參數(phpunit -c/my/path/phpunit)將它傳遞給phpunit。 XML) – robertboloc