PHP程式碼覆蓋率測試
簡介:最近研究了PHP程式碼覆蓋率的測試,後面發現了github一個開源專案(https://github.com/sebastianbergmann/php-code-coverage) ,對PHP程式碼覆蓋率測試已經做得很好了,所以拿來直接用,這裡總結怎麼用這個開源工具。
環境搭建
一、安裝php環境
1、php要選高版本,親測7.27可行,5.5就不行,7上的版本應該都可以。
二、安裝xdebug
這個直接網上搜怎麼安裝吧,我mac電腦用的是php整合環境MAMP,已經包含xdebug了,所以不用再安裝。
可以在phpInfo頁面檢視xdebug是否安裝好:
三、安裝composer
1、網上找資料安裝,安裝完成後可以在安裝目錄輸入命令檢視是否安裝成功,如下:
$ php composer.phar --version
Composer version 1.6.5 2018-05-04 11:44:59
2、把composer.phar放到待測專案的根目錄,並重命名為composer
四、專案配置
1、開啟PHP專案,我這裡ide是PHPStorm。本專案只有一個src資料夾,裡面有3個php檔案。
2、在專案根目錄下建一個檔案:composer.json, 內容如下
{ "name": "root/blog", "require-dev": { "phpunit/php-code-coverage":"6.0.7" } }
composer的作用是引入專案所依賴的其它專案,這裡就引入了phpunit/php-code-coverage,版本是6.0.7。php版本和php-code-coverage版本的對應關係參考:
https://packagist.org/packages/phpunit/php-code-coverage
3、開啟命令列,進入專案根目錄,輸入:php composer install
,作用是下載其它專案的程式碼到自己的專案裡,如下圖:
此時會在專案根目錄新增一個vender資料夾,放的是剛剛下載的程式碼,如下圖:
4、在根目錄新增一個prepend.php,作用看程式碼註釋
<?php /** * Created by PhpStorm. * User: 靈樞 * Date: 2018/9/5 * Time: 下午5:02 */ require_once dirname(__FILE__) . '/vendor/autoload.php'; use SebastianBergmann\CodeCoverage\CodeCoverage; $coverage = new CodeCoverage; # 設定白名單,就是設定你想計算覆蓋率的哪些資料夾 $coverage->filter()->addDirectoryToWhitelist(dirname(__FILE__) . '/src'); $coverage->start('<Site coverage>');#開始統計 register_shutdown_function('__coverage_stop',$coverage);#註冊關閉方法 function __coverage_stop(CodeCoverage $coverage){ $coverage->stop();#停止統計 $writer = new \SebastianBergmann\CodeCoverage\Report\Html\Facade; # 設定生成程式碼覆蓋率頁面的路徑 $writer->process($coverage, dirname(__FILE__) . '/coverage_html'); }
開始測試
一、執行php程式碼
1、在所需要測試的php檔案里加一行程式碼,來引入prepend.php,如下:
include_once("/******/prepend.php");
如 測試echoNumber.php的覆蓋率,程式碼如下:
<?php
/**
* Created by PhpStorm.
* User: 靈樞
* Date: 2018/8/31
* Time: 下午3:18
*/
include_once("/Applications/MAMP/htdocs/blog/prepend.php");
class echoNumber{
function add($a,$b){
echo $a+$b.PHP_EOL;
}
function jian($a,$b){
echo $a-$b.PHP_EOL;
}
function cheng($a,$b){
echo $a*$b.PHP_EOL;
}
function chu($a,$b){
echo $a/$b.PHP_EOL;
}
function call($a,$b){
$this->add($a,$b);
}
}
$f = new echoNumber();
$f->add(3,4);
$f->cheng(2,3);
$f->call(5,6);
2、執行echoNumber.php
執行後就會在根目錄下新增一個資料夾,用來存放生成html報告,如下圖。這裡的資料夾名稱就是在prepend.php裡設定的。
二、檢視報告
1、用瀏覽器開啟報告資料夾下的index.html,如下圖:
因為我src下有三個php檔案,所以這裡展示了3行