大家好,又见面了,我是你们的朋友全栈君。
简介:最近研究了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、网上找资料安装,安装完成后可以在安装目录输入命令查看是否安装成功,如下:
代码语言:javascript复制$ 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, 内容如下
代码语言:javascript复制{
"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,作用看代码注释
代码语言:javascript复制<?php
/**
* Created by PhpStorm.
* User: 灵枢
* Date: 2018/9/5
* Time: 下午5:02
*/
require_once dirname(__FILE__) . '/vendor/autoload.php';
use SebastianBergmannCodeCoverageCodeCoverage;
$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 SebastianBergmannCodeCoverageReportHtmlFacade;
# 设置生成代码覆盖率页面的路径
$writer->process($coverage, dirname(__FILE__) . '/coverage_html');
}
开始测试
一、运行php代码
1、在所需要测试的php文件里加一行代码,来引入prepend.php,如下:
代码语言:javascript复制include_once("/******/prepend.php");
如 测试echoNumber.php的覆盖率,代码如下:
代码语言:javascript复制<?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行
2、点开一个文件名,查看具体的覆盖情况,运行的代码绿色显示,如下图:
3、通过这个报告,我们能看到行的覆盖率、函数的覆盖率和类的覆盖率。
最后:我们真实测试覆盖率时不可能去每一个php文件里添加一行代码,可以考虑在真实项目的index文件里添加
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/186863.html原文链接:https://javaforall.cn