PHP测试框架PHPUnit组织测试操作示例


Posted in PHP onMay 28, 2018

本文实例讲述了PHP测试框架PHPUnit组织测试操作。分享给大家供大家参考,具体如下:

首先是目录结构

PHP测试框架PHPUnit组织测试操作示例

源文件夹为 src/
测试文件夹为 tests/

User.php

<?php
class Errorcode
{
  const NAME_IS_NULL = 0;
}
class User
{
  public $name;
  public function __construct($name)
  {
    $this->name=$name;
  }
  public function Isempty()
  {
    try{
      if(empty($this->name))
      {
        throw new Exception('its null',Errorcode::NAME_IS_NULL);
      }
    }catch(Exception $e){
      return $e->getMessage();
    }
    return 'welcome '.$this->name;
  }
}

对应的单元测试文件  UserTest.php

<?php
use PHPUnit\Framework\TestCase;
class UserTest extends TestCase
{
  protected $user;
  public function setUp()
  {
    $this->user = new User('');
  }
  public function testIsempty()
  {
    $this->user->name='mark';
    $result =$this->user->Isempty();
    $this->assertEquals('welcome mark',$result);
    $this->user->name='';
    $results =$this->user->Isempty();
    $this->assertEquals('its null',$results);
  }
}

第二个单元测试代码因为要引入 要测试的类  这里可以用 自动载入 避免文件多的话 太多include

所以在src/ 文件夹里写 autoload.php

<?php
function __autoload($class){
  include $class.'.php';
}
spl_autoload_register('__autoload');

当需要User类时,就去include User.php。写完__autoload()函数之后要用spl_autoload_register()注册上。

虽然可以自动载入,但是要执行的命令变得更长了。

打开cmd命令如下

phpunit --bootstrap src/autoload.php tests/UserTest

所以我们还可以在根目录写一个配置文件phpunit.xml来为项目指定bootstrap,这样就不用每次都写在命令里了。

phpunit.xml

<phpunit bootstrap="src/autoload.php">
</phpunit>

然后

打开cmd命令 执行MoneyTest 命令如下

phpunit tests/UserTest

打开cmd命令 执行tests下面所有的文件 命令如下

phpunit tests

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
一个简单的自动发送邮件系统(一)
Oct 09 PHP
php5编程中的异常处理详细方法介绍
Jul 29 PHP
PHP XML数据解析代码
May 26 PHP
php实现查询百度google收录情况(示例代码)
Aug 02 PHP
ThinkPHP实现带验证码的文件上传功能实例
Nov 01 PHP
[原创]PHP简单开启curl的方法(测试可行)
Jan 11 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
Mar 23 PHP
php微信支付接口开发程序
Aug 02 PHP
Laravel5中防止XSS跨站攻击的方法
Oct 10 PHP
PHP实现的简单排列组合算法应用示例
Jun 20 PHP
PHP Swoole异步MySQL客户端实现方法示例
Oct 24 PHP
PHP生成随机密码4种方法及性能对比
Dec 11 PHP
php empty 函数判断结果为空但实际值却为非空的原因解析
May 28 #PHP
PHP排序二叉树基本功能实现方法示例
May 26 #PHP
Thinkphp5+uploadify实现的文件上传功能示例
May 26 #PHP
PHP ADODB实现事务处理功能示例
May 25 #PHP
PHP ADODB实现分页功能简单示例
May 25 #PHP
ThinkPHP5.0框架控制器继承基类和自定义类示例
May 25 #PHP
php7函数,声明,返回值等新特性介绍
May 25 #PHP
You might like
PHP数字格式化
2006/12/06 PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
2013/02/18 PHP
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
PHP实现多级分类生成树的方法示例
2017/02/07 PHP
支持ie与FireFox的剪切板操作代码
2009/09/28 Javascript
JavaScript 事件系统
2010/07/22 Javascript
从URL中提取参数与将对象转换为URL查询参数的实现代码
2012/01/12 Javascript
jquery插件开发方法(初学者)
2012/02/03 Javascript
Javascript中自动切换焦点实现代码
2012/12/15 Javascript
jCallout 轻松实现气泡提示功能
2013/09/22 Javascript
jquery实现table鼠标经过变色代码
2013/09/25 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
js获取当前日期前七天的方法
2015/02/28 Javascript
Bootstrap基本插件学习笔记之Popover提示框(19)
2016/12/08 Javascript
兼容浏览器的js事件绑定函数(详解)
2017/05/09 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
Vue 表单控件绑定的实现示例
2017/08/11 Javascript
js装饰设计模式学习心得
2018/02/17 Javascript
vue实现提示保存后退出的方法
2018/03/15 Javascript
微信小程序判断页面是否从其他页面返回的实例代码
2019/07/03 Javascript
纯异步nodejs文件夹(目录)复制功能
2019/09/03 NodeJs
layui关闭弹窗后刷新主页面和当前更改项的例子
2019/09/06 Javascript
JS实现简单省市二级联动
2019/11/27 Javascript
解决vue中的无限循环问题
2020/07/27 Javascript
python实现定时播放mp3
2015/03/29 Python
python 多线程将大文件分开下载后在合并的实例
2018/11/09 Python
python钉钉机器人运维脚本监控实例
2019/02/20 Python
解决Django中调用keras的模型出现的问题
2019/08/07 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
2020/11/06 Python
计算机应用专业学生的自我评价分享
2013/11/03 职场文书
电气专业推荐信范文
2013/11/18 职场文书
客运企业隐患排查工作方案
2014/06/06 职场文书
nginx负载功能+nfs服务器功能解析
2022/02/28 Servers
如何打开Win11系统注册表编辑器?Win11注册表编辑器打开修复方法
2022/04/05 数码科技
Spring Data JPA框架Repository自定义实现
2022/04/28 Java/Android