【夯实PHP基础】PHPUnit -- PHP测试框架
分享提纲:
1.概述
2.安装
3.编写第一个测试用例
4.PHPUnit高级
5.参考
1.概述
1)【测试框架】
它是一款轻量级的PHP测试框架,是一个xUnit的体系结构的单元测试框架。复杂的项目,通过单元测试能够快速排查bug,有效减少bug的产生。简单的项目,使用php自带的var_dump()、print_r()也能很方便的调试bug。PHPUnit通过运行测试用例里的断言(例如判断返回结果不为空),检查代码是否符合预期。
2.安装
安装方式有两种。一种是使用phar包,一种是使用Composer。
mac下的安装请参考 http://blog.csdn.net/u013166311/article/details/52622560
(可以下载低版本的phpunit wget https://phar.phpunit.de/phpunit-4.0.14.phar)
于是打开终端,先pear version 验证是否安装了pear。 如果没有安装$sudo PHP /usr/lib/php/install-pear-nozlib.phar -d /usr/local/lib/php -b /usr/local/bin 用$ pear version检测安装成功 $ sudo pear upgrade-all 更新。 最后用以下命令安装成功: $ wget https://phar.phpunit.de/phpunit-4.0.14.phar $ chmod +x phpunit.phar $ sudo mv phpunit.phar /usr/local/bin/phpunit
mac下安装
2.1)使用phar包
最新版的稳定版phar包是5.7,下载地址 https://phar.phpunit.de/phpunit.phar
phar5.7发布于2016年12月2日,于2018年2月2日结束支持。
PHPUnit 5.7 支持 PHP 5.6, PHP 7.0, 和 PHP 7.1。
注意:PHP的版本比较低,可以下载低版本的 phpunit,例如 wget https://phar.phpunit.de/phpunit-4.0.14.phar
运行方法:
# 通用
php phpunit.phar --version # linux
chmod +x phpunit.phar
sudo mv phpunit.phar /usr/local/bin/phpunit
phpunit --version
可以查看版本号。
2.2)使用Composer
如果用 Composer 来管理项目的依赖关系,只要在项目的composer.json 文件中简单地加上对 phpunit/phpunit 的依赖关系即可。下面是一个最小化的 composer.json 文件的例子,只定义了一个对 PHPUnit 5.7 的开发时依赖:
{
"require-dev": {
"phpunit/phpunit": "5.5.*"
}
}
要通过 Composer 完成系统级的安装,可以运行:
composer global require "phpunit/phpunit=5.5.*"
请确保 path 变量中包含有 ~/.composer/vendor/bin/。
3.编写第一个测试用例
3.1)新建文件夹Testcase,编写SayHello.php:
<?php
class SayHello{
public function printHello(){
echo 'Hello';
return 'Hello';
}
}
?>
SayHello.php
3.2)新建测试用例SayHelloTest.php
<?php
require_once 'SayHello.php';
class SayHelloTest extends PHPUnit_Framework_TestCase {
public function setUp(){ }
public function tearDown(){ }
public function testConnectionIsValid(){
$hi = new SayHello();
$this->assertTrue($hi->printHello() == 'Hello');
}
}
SayHelloTest.php
编写完成后,切换到phpunit.phar所在目录命令行执行:
$ php phpunit.phar Testcase/SayHelloTest.php
输出结果:
PHPUnit 5.7.4 by Sebastian Bergmann and contributors. . 1 / 1 (100%)Hello Time: 130 ms, Memory: 10.00MB OK (1 test, 1 assertion)
结果表明:
测试通过,1个测试方法,1个断言,没有失败。
这里注意的是:
1、所有以Test结尾的类均为测试用例;
2、所有以test开头的方法均是测试方法,会自动运行;
3、setUp是每个测试用例最先运行的方法,tearDown是每个测试用例最后运行的方法;
4、assertTrue用于判断结果是否为true。
4.PHPUnit高级
4.1) 模拟对象MOCK
4.2) 一些常识
@test标注将其标记为测试方法@depends标注来表达测试方法之间的依赖关系: 被依赖的函数的返回值会被当做依赖着的输入参数
5.参考
5.0)【好】PHPUnit手册
5.2)web3d/TPUnit: ThinkPHP PHPUnit框架集成
5.3)[PHP]PHPUnit安装配置及样例 | CoinIdea的技术分享博客
5.4)《xUnit Test Patterns》学习笔记系列 - CoderZh - 博客园
5.5)【好】PHPUnit笔记
【夯实PHP基础】PHPUnit -- PHP测试框架的更多相关文章
- java基础之junit测试框架
1.导入junit包, 2.测试方法格式 public void test_*(){} 继承 TestCase 包(keep the bar green to keep the code clea ...
- phpunit 测试框架安装
PHPUnit是一个轻量级的PHP测试框架.它是在PHP5下面对JUnit3系列版本的完整移植,是xUnit测试框架家族的一员(它们都基于模式先锋Kent Beck的设计).来自百度百科 一.下载wg ...
- 基于python3在nose测试框架的基础上添加测试数据驱动工具
[本文出自天外归云的博客园] Python3下一些nose插件经过2to3的转换后失效了 Python的nose测试框架是通过python2编写的,通过pip3install的方式安装的nose和相关 ...
- Python测试框架pytest入门基础
Pytest简介 Pytest is a mature full-featured Python testing tool that helps you write better programs.T ...
- 测试必会 Docker 实战(一):掌握高频命令,夯实内功基础
在 Dokcer 横空出世之前,应用打包一直是大部分研发团队的痛点.在工作中,面对多种服务,多个服务器,以及多种环境,如果还继续用传统的方式打包部署,会浪费大量时间精力. 在 Docker 出现后,它 ...
- PHP自动测试框架Top 10
对于很多PHP开发新手来说,测试自己编写的代码是一个非常棘手的问题.如果出现问题,他们将不知道下一步该怎么做.花费很长的时间调试PHP代码是一个非常不明智的选择,最好的方法就是在编写应用程序代码之前就 ...
- Java Junit测试框架
Java Junit测试框架 1.相关概念 Ø JUnit:是一个开发源代码的Java测试框架,用于编写和运行可重复的测试.它是用于单元测试框架体系xUnit的一个实例(用于java语言).主要 ...
- 夯实Java基础系列4:一文了解final关键字的特性、使用方法,以及实现原理
目录 final使用 final变量 final修饰基本数据类型变量和引用 final类 final关键字的知识点 final关键字的最佳实践 final的用法 关于空白final final内存分配 ...
- 夯实Java基础系列10:深入理解Java中的异常体系
目录 为什么要使用异常 异常基本定义 异常体系 初识异常 异常和错误 异常的处理方式 "不负责任"的throws 纠结的finally throw : JRE也使用的关键字 异常调 ...
随机推荐
- WCF、WebAPI、WCFREST、WebService之间的区别【转载】
在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API.在.net平台下,你有很多的选择来构建一个HTTP Services.我分享一下我对 ...
- Java四种引用
Java中提供了一个Reference抽象类,此类定义所有引用对象共有的操作,与垃圾收集器密切配合实现的.主要是为了决定某些对象的生命周期,有利于JVM进行垃圾回收.而继承此类的有四种引用,分别是St ...
- RabbitMQ 在 web 页面 创建 exchange, queue, routing key
这里只是为了展示, 在实际开发中一般在消费端通过 注解来自动创建 消费端: https://www.cnblogs.com/huanggy/p/9695934.html 1, 创建 Exchange ...
- Linux 安装 jdk8
切换目录 cd /usr 创建目录 mkdir java cd java 下载 jdk rz 或者 ftp 都行,只要能成功上传 解压 tar zxvf jdk-8u181-linux-x64.tar ...
- .net core 下编码问题
System.Globalization.CultureInfo.CurrentCulture = new System.Globalization.CultureInfo("zh-CN&q ...
- 8.Odoo产品分析 (二) – 商业板块(3) –CRM(2)
查看Odoo产品分析系列--目录 接上一篇Odoo产品分析 (二) – 商业板块(3) –CRM(1) 4. 设置 在配置–>设置中: 在分析"销售"模块时已经将其他的 ...
- iOS------App之间传递数据的几种方式
UIDocumentInteractionController UIActivityViewController Shared Keychain Access Custom URL Scheme We ...
- Python 一键上传下载&一键提交文件到SVN入基线工具
一键上传下载&一键提交文件到SVN入基线工具 by:授客 QQ:1033553122 实现功能 1 测试环境 1 使用说明 1 注: 根据我司项目规则订制的一套工具,集成以下功能,源码 ...
- Android为TV端助力 MVP设计模式!
实现原理: MainActivity 用来更新UI,和显示业务逻辑的结果! LoginPresenterCompl 用来处理 业务逻辑 ILoginPresenter 业务处理类抽象出来的接口 ILo ...
- java数据结构 • 面向对象 • 异常 • 随机数·时间
• 语法基础 • 控制流 • 数据结构 • 面向对象 • 异常 • 随机数 //String常用的方法: indexOf charAt charAt codePointAt compa ...