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服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...
随机推荐
- 那些年~~~我们的C#笔试内测题目
<深入.NET平台和C#编程>内部测试题-笔试试卷 一 选择题 1) 以下关于序列化和反序列化的描述错误的是( C). a) 序列化是将对象的状态存储到特定存储介质中的过程 b) 二进制格 ...
- jQuery 表单
1.一般输入信息的提示用<span> 属性为text 2.<input>只有设置了 name 属性的表单元素才能在提交表单时传递它们的值. 3.blur 失去焦点 4.$. ...
- zTree中父节点禁用,子节点可以用
参考学习网址:http://www.treejs.cn/v3/main.php#_zTreeInfo zTree中父节点禁用,子节点可以用 axios.get('/base/unit/unittree ...
- struts文件异常Included file cannot be found
1.命名规范,都是采用struts-xxx.xml文件,即以struts开头 2.file的路径不要以/开头,在其他版本是以/开头的 <include file="/com/bjsxt ...
- Hibernate 的原生 SQL 查询
Hibernate除了支持HQL查询外,还支持原生SQL查询. 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取 ...
- 2.supervisor实时监控程序存活状态
1.supervisor是一款python开发的一个client/server服务,是一款进程管理工具,支持linux/unix系统,但是不支持windows系统. 它可以很方便的监听.启动.停止.重 ...
- designed principle
Review Of designed Pattern principle OutLine: Explanation in principles of designed pattern and usef ...
- c语言统计一个文件中的单词,字符和行数
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- Spring怎么引入多个xml配置文件
方式一:在web.xml中通过<context-param> 标签引入 <context-param> <param-name>contextConfigLocat ...
- 易趣:使用MongoDB创建关键业务的多数据中心应用
eBay:使用MongoDB创建关键业务的多数据中心应用 作为全球前十的零售品牌,eBay的活跃用户有一亿七千多万,并拥有跨越全世界190个市场的10亿购物清单,这样的规模下,eBay绝对不允许出现宕 ...