PHPUnit简介及使用
一、PHPUnit是什么?
1、它是一款轻量级的PHP测试框架,地址:http://www.phpunit.cn
2、手册:http://www.phpunit.cn/manual/5.7/zh_cn/installation.html
二、为什么要用PHPUnit?
1、可以通过命令操控测试脚本
2、可以测试性能
3、可以测试代码覆盖率
4、可以自动化的更新测试用例的参数数据
5、各种格式的日志
三、PHPUnit使用规则
1、 一般被测试类的后面加上”Test”,比如要测试的类为Array,则测试用例的命名为ArrayTest。
2、测试类ArrayTest继承于PHPUnit_Framework_TestCase
3、测试方法必须为public权限,都是test开头,或者你也可以选择给其加注释@test来表明该函数为测试函数
4、通过断言方法来对实际值和预期值进行断言,断言方法可以参照手册:http://www.phpunit.cn/manual/5.7/zh_cn/appendixes.assertions.html
快速入门:
|
class ArrayTest extends PHPUnit_Framework_TestCase //测试用例运行后执行 // 断言数组$fixture中元素的数目是0。 } |
命令行启动测试用例:
phpunit 测试文件名,此处为要测试ArrayTest.php文件
|
phpunit ArrayTest.php PHPUnit 5.7.5 by Sebastian Bergmann and contributors. .. 2 / 2 (100%) Time: 138 ms, Memory: 3.25MB OK (2 tests, 4 assertions) |
记录测试日志:
日志多种格式:http://www.phpunit.cn/manual/5.7/zh_cn/textui.html#textui.clioptions
|
phpunit ArrayTest.php --log-tap log.txt TAP version 13 |
四、PHPUnit测试代码覆盖率
可以参考:http://www.phpunit.cn/manual/current/zh_cn/code-coverage-analysis.html
可以通过配置phpunit.xml设置需要测试的代码路径或文件
例如:phpunit.xml的配置(放在项目根目录)

1、通过生成html页面查看代码覆盖率
通过执行命令:phpunit --coverage-html ./coverage ./src/test
命令解释:
- --coverage-html:生成覆盖率结果的html
- coverage:html生成目录,可以重新定义
- ./src/test:测试用例目录(也可以是单个测试用例文件)
覆盖率结果:

可以看到目录里每个文件的覆盖率:

还可以清晰的看到每一个文件代码覆盖率:

2、通过生成的text文件查看代码覆盖率
通过执行命令:phpunit --coverage-text ./src/test > test.log
命令解释:
- --coverage-html:生成覆盖率结果的text
- ./src/test:测试用例目录(也可以是单个测试用例文件)
- > test.log:存放覆盖率结果的文件(文件名称自己定义)
覆盖率结果:

可以清晰的看到总覆盖率和每个文件的覆盖率。
覆盖率计算问题:
1、类:只有类中所有代码都执行了,覆盖率才为100%;
2、方法:类中的方法每一行都执行了,覆盖率才算100%。例如:类中有5个方法,有两个方法每一行执行了,覆盖率为:40%;
3、行:每一行代码都执行了就是100%;
PHPUnit简介及使用的更多相关文章
- PHPUnit简介及使用(thinkphp5的单元测试安装及使用)
PHPUnit简介及使用(thinkphp5的单元测试安装及使用) 一.总结 一句话总结:直接google这个phpunit(how to use phpunit),然后去官网看使用样例和手册,那些英 ...
- 19-06 【phpunit和docker】
phpunit简介 在用PHP做项目的时候,有时候我们需要写一些测试代码,其中可能包含单元测试(比如字符串处理,ip解析,mobile解析等). 我们常用的工具是phpunit,它很方便地帮我们组织测 ...
- Laravel 文件夹结构简介
表 1.1:Laravel 文件夹结构简介 文件夹名称 简介 app 应用程序的业务逻辑代码存放文件夹 app/Console 存放自定义 Artisian 命令文件 app/Http/Control ...
- TP 5.0 架构 简介
TP 5.0 架构 简介 thinkphp 5.0 为API开发而设计的的高性能框架,是与以往thinkphp5.0以下版本大不相同的新型框架,病对以颠覆和重构版本,采用全新的架构思想,引入了更多的P ...
- 【技术博客】 Laravel 5.1单元测试(PHPUnit)入门
目录 Laravel 5.1单元测试(PHPUnit)入门 简介 安装与配置 1. 安装 2. 配置 编写测试样例 1. 新建测试样例 2. 编写函数的测试 3. 编写Web功能测试 运行测试与查看结 ...
- ASP.NET Core 1.1 简介
ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...
- MVVM模式和在WPF中的实现(一)MVVM模式简介
MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...
- Cassandra简介
在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...
- REST简介
一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...
随机推荐
- Mysql开启远程连接方法
分类: 数据库开发技术 解决MySQL不允许从远程访问的方法 开启 MySQL 的远程登陆帐号有两大步: 1.确定服务器上的防火墙没有阻止 3306 端口. MySQL 默认的端口是 3306 ,需要 ...
- dedesms中的导致生成静态页面多出空白行解决办法
前几天给朋友用织梦仿一个手机网站,保存处理好的代码,页面头部在浏览里莫名其妙多了一段空白区域,用调试工具查看,发现是代码里多了一行.后来发现很多网友在生成织梦页面的时候,头部 ...
- 修真院java后端工程师学习课程--任务1(day one)
这是我从学习资料-线下报名-北京报名截取的报名截图,从图中我们可以看出我们的报名对象应该有姓名,qq,修真类型,预计入学时间,毕业院校,线上学号,日报链接,立愿,辅导师兄等属性,其中线上学号是主码. ...
- 数据结构与算法(c++)——反转链表
算法概述:要求实现将一条单向链表反转并考虑时间复杂度. 算法分析: 数组法(略): 将列表元素逐个保存进数组,之后再逆向重建列表 点评:实现逻辑最简单,需要额外的内存开销. 移动指针: 通过三个指针逐 ...
- MapReduce 原理与 Python 实践
MapReduce 原理与 Python 实践 1. MapReduce 原理 以下是个人在MongoDB和Redis实际应用中总结的Map-Reduce的理解 Hadoop 的 MapReduce ...
- Mybatis异常:java.lang.ClassNotFoundException: org.mybatis.spring.SqlSessionFactoryBean
问题描述: 一月 15, 2014 3:43:13 下午 org.springframework.context.support.AbstractApplicationContext prepareR ...
- CPU频率
CPU频率 CPU频率,就是CPU的时钟频率,简单说是CPU运算时的工作的频率(1秒内发生的同步脉冲数)的简称. 概念 CPU频率,就是CPU的时钟频率,简单说是CPU运算时的工作的频率(1秒内发生的 ...
- PreparedStatement和Statement区别
在JDBC应用中,如果你已经是稍有水平开发者,你就应该始终以PreparedStatement代替Statement.也就是说,在任何时候都不要使用Statement 一.代码的可读性和可维护性. 虽 ...
- Android 双卡获取当前使用流量在线卡的信息
最近接触了一个项目,需要获取在线流量卡的信息,下面的方式,可以获取大部分手机的正确手机卡信息. 一 获取获取IMEI public static String getDeviced(int solt ...
- 关于win10企业版1607累积更新(KB4013429)安装失败后,个人的解决办法
最近连续一个多星期更新(1607-KB4013429)失败,更抓狂的是windows不厌其烦的,不断下载,不断更新,导致每天打开电脑都要等个十几分钟,看来不解决是不行了. 网上一查,有各种解决版本 1 ...