php 覆盖率_java代码覆盖率工具

php 覆盖率_java代码覆盖率工具简介:最近研究了PHP代码覆盖率的测试,后面发现了github一个开源项目(https://github.com/sebastianbergmann/php-code-coverage),对PHP代码覆盖率测试已经做得很好了,所以拿来直接用,这里总结怎么用这个开源项目。环境搭建一、安装php环境1、php要选高版本,亲测7.27可行,5.5就不行二、安装xdebug这个直接网上搜怎么安…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

简介:最近研究了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是否安装好:
php 覆盖率_java代码覆盖率工具

三、安装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 ,作用是下载其它项目的代码到自己的项目里,如下图:
php 覆盖率_java代码覆盖率工具
此时会在项目根目录新增一个vender文件夹,放的是刚刚下载的代码,如下图:
php 覆盖率_java代码覆盖率工具

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里设置的。
php 覆盖率_java代码覆盖率工具

二、查看报告

1、用浏览器打开报告文件夹下的index.html,如下图:

php 覆盖率_java代码覆盖率工具

因为我src下有三个php文件,所以这里展示了3行

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

php 覆盖率_java代码覆盖率工具

3、通过这个报告,我们能看到行的覆盖率、函数的覆盖率和类的覆盖率。

最后:我们真实测试覆盖率时不可能去每一个php文件里添加一行代码,可以考虑在真实项目的index文件里添加

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/186863.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Origin绘图快速上手指南「建议收藏」

    Origin绘图快速上手指南「建议收藏」1、创建工程打开origin后,点击菜单栏“文件”,选择“项目另存为”,给项目命名,并存到某个工作路径。2、导入数据然后将excel中的数据(只要数据)选中后复制到Book1中,从第5行开始粘贴。可以在侧面打开“项目管理器”,给表格“Book1”重命名为“曲线数据”。还可以在表格的“长单位”处给每列数据加上标签。3、那么这时可以直接使用Origin的自动绘图功能了。选择A、B、C所有列,然后点击菜单栏的“绘图”,选择一个折线图,双击即可绘图。这样呢就是将两条曲线放到同一张图中了。如果想要自定

    2022年5月31日
    58
  • vue ant design callback问题

    vue ant design callback问题

    2020年11月9日
    537
  • BP神经网络算法学习及代码实现(含Python源码)[通俗易懂]

    BP神经网络算法学习及代码实现(含Python源码)[通俗易懂]目录1.写在前面2.BP神经网络推导2.1前向传播2.2反向传播2.2.1求解梯度矩阵2.2.2梯度下降法2.2.3反向传播公式推导输出层误差推导隐藏层误差参数变化率参数更新3.代码实现3.1过程解释3.1.1导入库3.1.2定义sigmoid函数3.1.3导入数据集3.1.4初始化权重和偏倚3.1.5开始训练3.2完整代码3.3预测结果1.写在前面BP神经网络算法作为作为机器学习最基础的算法,非常适合入门。透彻掌握其原理将对于今后的机器学习有很大的帮助。2.BP神经网络推导2.1前向传播前向传播

    2025年10月27日
    0
  • 在c语言里0和1表示什么_’0’是什么意思c语言

    在c语言里0和1表示什么_’0’是什么意思c语言C语言中常见~Number,怎么计算?计算一个数字的~number比如说现在有A=60那么A的8位二进制数就是00111100那首先要计算~A即~60,那么先取反即11000011。因为负数的补码是取反+1。所以此处逆向操作需要-1取反即11000011-1==11000010(第一步逆向操作)11000010=>取反=>00111101=>十进制的61最后结果A==60,~A=-61C

    2022年9月20日
    2
  • javaWeb学习——servlet、filter、listener、intercept的区别

    javaweb开发有很多技术要学习,首先将简单的概念和基础打好,然后才能更好的成长! 自己整理一遍,记忆深刻一点! 一:概念二:实现方式三:执行逻辑图参考:http://www.cnblogs.com/shangxiaofei/p/5328377.htmlhttp://blog.csdn.net/lzwjavaphp/article/details/13771109

    2022年2月25日
    40
  • 程序员法则xiazai_程序员手册

    程序员法则xiazai_程序员手册第六章论剑  我深深的吸了一口气,让自己的激动的心情平息下来。“大家好,很高兴可以和大家合作开发这个项目,我也不浪费大家的时间,下面我就给大家讲一下这个项目的具体构架情况”。一个个的方案才我的嘴里轻松的说出来,每个人都分配到合适的任务,每个人都清楚的明白自己的目的,我全身心的投入指挥当中,我记得BRUCE,也是我程序道路上的领路人之一,曾经在发给我的EMAIL中说过:“许,你编写的程序让我感受到

    2022年10月7日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号