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服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...
随机推荐
- 阿里云邮箱POP3、SMTP设置教程
3G免费网www.3gmfw.cn免费为你分享阿里云邮箱POP3.SMTP设置教程,阿里云邮箱 阿里云邮箱POP3设置 阿里云邮箱SMTP设置的相关资源如下: 什么是POP3.SMTP? 阿里云邮箱已 ...
- WaitForXXX等待无效句柄
=================================版权声明================================= 版权声明:原创文章 禁止转载 请通过右侧公告中的“联系邮 ...
- 读书笔记之《Java编程思想》
17. 容器 Set 存入Set的每个元素都必须是唯一的,因为Set不保存重复元素. Set接口不保证维护元素的次序 Map 映射表(关联数组)的基本思想是维护的是键-值(对)关联,因此可以用键来查找 ...
- Dreamweaver cs6中文版完整安装步骤:
Dreamweaver cs6中文版完整安装步骤: http://www.cr173.com/soft/72633.html 1.首先我们需要下载Dreamweaver cs6官方中文原版安装程序,下 ...
- servlet多线程问题
Servlet本身是单实例的,这样当多个用户同时访问某个Servlet时,会访问该唯一的Servlet实例中的成员变量,如果对成员变量进行写入工作,那就会导致Servlet的多线程问题,即数据不一致. ...
- vue.js中的各种问题记录(包括环境问题和学习笔记)
一.this relative module was not found: 问题的意思是这个模块找不到了 解决方法: 1)查看你入口文件的路径是否写错: 2)查看360杀毒是否拦截了你的文件. 二.v ...
- python 与redis
一.redis安装 源码安装: 1.wget http://download.redis.io/redis-stable.tar.gz 2.yum install gcc 3.tar zx ...
- main函数的两个参数
#include "stdio.h" int main(int argc ,char **argv) { printf("argc = %d \n",argc) ...
- Shell中脚本变量的作用域
原文地址:http://blog.csdn.net/abc86319253/article/details/46341839 在shell中定义函数可以使代码模块化,便于复用代码.不过脚本本身的 ...
- redis五大类型用法
Redis五大类型:字符串(String).哈希/散列/字典(Hash).列表(List).集合(Set).有序集合(sorted set)五种Controller:@Resource RedisTe ...