一、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 
{
//测试用例运行前初始化
public function setUp(){}

//测试用例运行后执行
public function tearDown(){}
/**
* @test
*/
public function testArrayIsEmpty()
{
$fixture = array();

// 断言数组$fixture中元素的数目是0。
$this->assertEquals(0, sizeof($fixture));
}
/**
* @test
*/
public function testarrayHasKey()
{
$arr = array(
'id'=>666,
'name'=>'zhangsan',
);
//断言$arr是一个数组
$this->assertTrue(is_array($arr));
//断言数组$arr中含有索引id
$this->assertArrayHasKey('id',$arr);
//断言数组$arr中含有索引name
$this->assertArrayHasKey('name',$arr);
}

}

命令行启动测试用例:

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
ok 1 - ArrayTest::testArrayIsEmpty
ok 2 - ArrayTest::testarrayHasKey
1..2

四、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简介及使用的更多相关文章

  1. PHPUnit简介及使用(thinkphp5的单元测试安装及使用)

    PHPUnit简介及使用(thinkphp5的单元测试安装及使用) 一.总结 一句话总结:直接google这个phpunit(how to use phpunit),然后去官网看使用样例和手册,那些英 ...

  2. 19-06 【phpunit和docker】

    phpunit简介 在用PHP做项目的时候,有时候我们需要写一些测试代码,其中可能包含单元测试(比如字符串处理,ip解析,mobile解析等). 我们常用的工具是phpunit,它很方便地帮我们组织测 ...

  3. Laravel 文件夹结构简介

    表 1.1:Laravel 文件夹结构简介 文件夹名称 简介 app 应用程序的业务逻辑代码存放文件夹 app/Console 存放自定义 Artisian 命令文件 app/Http/Control ...

  4. TP 5.0 架构 简介

    TP 5.0 架构 简介 thinkphp 5.0 为API开发而设计的的高性能框架,是与以往thinkphp5.0以下版本大不相同的新型框架,病对以颠覆和重构版本,采用全新的架构思想,引入了更多的P ...

  5. 【技术博客】 Laravel 5.1单元测试(PHPUnit)入门

    目录 Laravel 5.1单元测试(PHPUnit)入门 简介 安装与配置 1. 安装 2. 配置 编写测试样例 1. 新建测试样例 2. 编写函数的测试 3. 编写Web功能测试 运行测试与查看结 ...

  6. ASP.NET Core 1.1 简介

    ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...

  7. MVVM模式和在WPF中的实现(一)MVVM模式简介

    MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...

  8. Cassandra简介

    在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...

  9. REST简介

    一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...

随机推荐

  1. 那些年~~~我们的C#笔试内测题目

    <深入.NET平台和C#编程>内部测试题-笔试试卷 一 选择题 1) 以下关于序列化和反序列化的描述错误的是( C). a) 序列化是将对象的状态存储到特定存储介质中的过程 b) 二进制格 ...

  2. jQuery 表单

    1.一般输入信息的提示用<span>   属性为text 2.<input>只有设置了 name 属性的表单元素才能在提交表单时传递它们的值. 3.blur 失去焦点 4.$. ...

  3. zTree中父节点禁用,子节点可以用

    参考学习网址:http://www.treejs.cn/v3/main.php#_zTreeInfo zTree中父节点禁用,子节点可以用 axios.get('/base/unit/unittree ...

  4. struts文件异常Included file cannot be found

    1.命名规范,都是采用struts-xxx.xml文件,即以struts开头 2.file的路径不要以/开头,在其他版本是以/开头的 <include file="/com/bjsxt ...

  5. Hibernate 的原生 SQL 查询

    Hibernate除了支持HQL查询外,还支持原生SQL查询.         对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取 ...

  6. 2.supervisor实时监控程序存活状态

    1.supervisor是一款python开发的一个client/server服务,是一款进程管理工具,支持linux/unix系统,但是不支持windows系统. 它可以很方便的监听.启动.停止.重 ...

  7. designed principle

    Review Of designed Pattern principle OutLine: Explanation in principles of designed pattern and usef ...

  8. c语言统计一个文件中的单词,字符和行数

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  9. Spring怎么引入多个xml配置文件

    方式一:在web.xml中通过<context-param> 标签引入 <context-param> <param-name>contextConfigLocat ...

  10. 易趣:使用MongoDB创建关键业务的多数据中心应用

    eBay:使用MongoDB创建关键业务的多数据中心应用 作为全球前十的零售品牌,eBay的活跃用户有一亿七千多万,并拥有跨越全世界190个市场的10亿购物清单,这样的规模下,eBay绝对不允许出现宕 ...