php代码覆盖工具(2)-phpunit-支持生成覆盖率报告

版本信息

php 7.3.12
xdebug 2.8.0
phpunit 7.1.0
composer  2.0.8

1.安装php环境:教你使用Wampserver(超级详细) - 简书

2.安装xdebug

下载xdebug,windows上安装xdebug需要下载的是dll组件,下载时注意php版本,我的php版本是7.3.12
下载地址: Xdebug: Downloads,也可点击直接下载php_xdebug-2.8.0-7.3-vc15-x86_64.dll

我用的是wamp集成环境,将dll文件放在了php根目录下的zend_ext文件夹中

配置xdebug,进入php的根目录,如:D:\Tool\wamp64\bin\php\php7.3.12,找到php.ini文件,添加以下配置,将zend_extension_ts改为刚才放置的xdebug的dll组件位置

[Xdebug]

zend_extension_ts="/zend_ext/php_xdebug-2.8.0-7.3-vc15-x86_64.dll"
xdebug.auto_trace=on
xdebug.collect_params=on
xdebug.collect_return=on
xdebug.trace_output_dir="/tmp/xdebug"
xdebug.profiler_enable=on
xdebug.profiler_output_dir="/tmp/xdebug"

访问http://localhost/?phpinfo=-1,验证xdebug已安装成功并被正确识别

3.安装composer:Composer 安装与使用 | 菜鸟教程

安装完成后可以在安装目录输入命令查看是否安装成功,如下:

把composer.phar放到待测项目的根目录(该项目仅有一个src文件夹),并重命名为composer,新增composer.json文件

4.安装phpcov 和 phpunit

composer的作用是引入项目所依赖的其它项目,这里就引入了phpunit/php-code-coverage,版本是7.0.1,(phpcov是根据phpunit自动匹配的)

编辑composer.json文件如下:

{
  "name": "root/demo2",
    "require-dev": {
        "phpunit/phpunit":"7.1.0",
        "phpunit/phpcov": "*"
}
}

php和phpunit对应关系:

打开命令行,进入项目根目录,输入:php composer install ,作用是下载其它项目的代码到自己的项目里,安装完成后会生成一个vendor文件夹

进入D:\Tool\wamp64\www\demo2\vendor\bin 目录,验证已安装成功

5.编写项目文件

分别在所需要测试的php文件里加一行代码,来引入prepend.php,如下:

include_once("D:/Tool/wamp64/www/demo2/prepend.php"); 
#id.php

<?php
include_once("D:/Tool/wamp64/www/demo2/prepend.php"); 

$id = $_GET['id'];

if ($id == 1){
    echo "Valid account";
}elseif($id == 2){
    echo "Invalid account";
}elseif($id == -1){
    echo "blacklist";
}else{
    echo "error";
}
#status.php

<?php

include_once("D:/Tool/wamp64/www/demo2/prepend.php"); 


$status = $_GET['status'];

if ($status == 1){
    echo "register";
}elseif($status == 2){
    echo "unregister";
}elseif($status == -1){
    echo "fail";
}else{
    echo "error";
}
?>

在项目根目录新增prepend.php文件

#prepend.php

<?php
require_once dirname(__FILE__).'/vendor/autoload.php';  # 在composer生成的vender同级目录
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');
}

此时项目结构入下:(IDE使用的eclipse for php)

 6.运行测试

在浏览器中访问http://localhost/demo2/src/id.php?id=1

然后就会在根目录下新增一个coverage_html文件夹,用来存放生成html报告,如下图。这里的文件夹名称就是在prepend.php里设置的。

7.查看报告

1、用浏览器打开报告文件夹下的index.html,如下图:显示共有两个文件,id.php覆盖了3行代码,status.php覆盖为0行

(这个有个bug待解决,id.php代码总行数统计有误,覆盖率正确应该为3/11)

2、点开一个文件名,查看具体的覆盖情况,运行的代码绿色显示,如下图:

id.php覆盖了3行

status.php覆盖了0行

附:

# 从白名单中移除文件夹
$coverage->filter()->removeDirectoryFromWhitelist('/var/www/html/userinfo.php');

# 从白名单中移除文件
$coverage->filter()->removeFileFromWhitelist('/var/www/html/userinfo.php');

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值