简介:最近研究了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行

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

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

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

PHP代码覆盖率测试相关推荐

  1. OpenCover+ReportGenerator实现.net代码覆盖率测试

    文章来源:公众号-智能化IT系统. OpenCover+ReportGenerator实现.net代码覆盖率测试 公众号-智能化IT系统.每周都有技术文章推送,包括原创技术干货,以及技术工作的心得分享 ...

  2. linux代码工具tag,gcov-dump原理分析_Linux平台代码覆盖率测试

    第 16 页 LINES tag: tag_lines() 函数 3.4 LINES tag: tag_lines() 函数static void tag_lines ( const char * f ...

  3. jacoco入门_Android jacoco 代码覆盖率测试入门

    前言 最近同事搞了一个基于 jacoco 统计 Android 代码覆盖率测试的功能,可以统计每天手工测试的代码覆盖率.抱着好奇的心态,自己也学习一下 jacoco,陆陆续续搞了三天终于有点结果了. ...

  4. VS2015+NUnit+OpenCover 完成单元测试代码覆盖率测试

    1.VS2015+NUnit+OpenCover 完成单元测试代码覆盖率测试 https://download.csdn.net/download/qq_39441918/10522539 2.*注意 ...

  5. Linux平台代码覆盖率测试工具GCOV简介

    本博客 http://blog.csdn.net/livelylittlefish 贴出作者(三二一@小鱼)相关研究.学习内容所做的笔记,欢迎广大朋友指正! Content 1. gcov是什么? 2 ...

  6. C语言代码覆盖率测试工具-OpenCppCoverage介绍

    代码覆盖率测试工具名称:OpenCppCoverage 简介: OpenCppCoverage是2014年推出的Windows平台下开源的C++代码覆盖率工具,类似于Linux下gcc内嵌的gcov工 ...

  7. Linux平台代码覆盖率测试工具GCOV的前端工具LCOV简介

    本博客 http://blog.csdn.net/livelylittlefish 贴出作者(三二一@小鱼)相关研究.学习内容所做的笔记,欢迎广大朋友指正! Content 1. Lcov是什么? 2 ...

  8. testng查看覆盖率_代码覆盖率测试技术

    测试覆盖率常被用来衡量测试的充分性和完整性,也是测试有效性的一个度量.敏捷开发的大潮之下,如何在快速迭代的同时保证对被测代码的覆盖度和产品质量,是一个非常有挑战性的话题.本文依次介绍代码覆盖率的基本知 ...

  9. coverage代码覆盖率测试工具:基本原理分析与使用

    coverage环境描述 本文环境python3.5.2 coverage版本4.3.1 coverage概述 代码覆盖率工具主要是为了检查测试用例覆盖了多少业务处理代码,在Django项目中,通过编 ...

最新文章

  1. 【EntityFramework系列教程三,翻译】在ASP.NET MVC程序中使用EntityFramework对数据进行排序、过滤筛选以及实现分页...
  2. 【408预推免复习】计算机组成原理之计算机的运算方法
  3. 软件架构设计原则和大数据平台架构层
  4. 8.1 matlab图形窗口与坐标轴(图形对象的句柄和属性、坐标轴的操作、图形窗口的操作)
  5. jvm 崩溃日志设置_记一次JVM疯狂GC导致CPU飙高的问题解决
  6. db2 如何导出insert语句_MySQL 执行脚本/导入/导出数据
  7. java flux api,SpringBoot学习系列-WebFlux REST API 全局异常处理
  8. Kaldi AMI数据集脚本学习2----run_prepare_shared.sh
  9. 拓端tecdat|R语言通过WinBUGS对MGARCH和MSV模型进行贝叶斯估计和比较
  10. 【车牌识别】基于matlab GUI汽车出入库收费系统(带面板)【含Matlab源码 735期】
  11. 微信小游戏代码包侵权(最新)
  12. python气象数据分析_气象数据分析--数据预处理
  13. 2021年泰迪杯数据挖掘赛B题数据——岩石图像的智能分类
  14. 游戏服务器开发都要学什么
  15. Raul的新机器学习书!
  16. 敏捷软件开发-薪水支付案例学习
  17. 使用git时输错密码解决办法
  18. LaTeX入门学习(2)(安装)
  19. 程序员就是这么皮,逆向Google maps snake游戏
  20. ETL数据仓库工程师笔试题和面试题整理

热门文章

  1. [黑金原创教程][连载]关于《iBoard 电子学堂》的学习及进阶方式
  2. waitpid函数的介绍
  3. 响应式布局或自适应网页设计
  4. 抖音直播间:公屏信息解析(纯协议方式)
  5. uqee卧龙吟的战报总是丢,分析一下
  6. php图像处理插件,推荐一个 PHP 图像处理操作插件 Intervention Image
  7. Spring Security进行权限控制
  8. python+django+vue搭建前后端分离项目Part2——前端Vue
  9. hfs文件服务器使用
  10. FindBugs 插件使用