PHPUnit整合ThinkPHP的库TPUnit

简介: 项目地址:https://github.com/web3d/TPUnitThinkPHP PHPUnit框架集成,基于TP3.2,建议PHP 5.4以上环境。单元测试应该是提高PHP编码质量的解决之道,但应该没有多少PHP团队在用单元测试改善开发过程,更不用提TDD开发方法。

项目地址:https://github.com/web3d/TPUnit

ThinkPHP PHPUnit框架集成,基于TP3.2,建议PHP 5.4以上环境。

单元测试应该是提高PHP编码质量的解决之道,但应该没有多少PHP团队在用单元测试改善开发过程,更不用提TDD开发方法。

不可否认ThinkPHP框架在国内PHP圈子中的“至高”地位,所以才有这次整合尝试,同时也在团队中进行推行相关实践。

1. 初始配置

为了减少学习成本,建议使用像Netbeans这样的IDE来设定PHPUnit的基本环境。

通过Netbeans的操作界面,可以直接了解PHPUnit使用过程的一些核心概念。

  • 基于Netbeans的PHPUnit环境配置
  • git clone git@github.com:web3d/TPUnit.git 到ThinkPHP的Vendor目录下
  • 给ThinkPHP框架打补丁 将Think\Think类的start方法最后一行改为 !constant('NO_NEED_RUN_APP') && App::run();,同时 Think\App::init() 方法 !constant('NO_NEED_RUN_APP') && Dispatcher::dispatch();(注:由于创建测试文件的命令是在Cli环境执行,与TP的Cli模式处理冲突,临时解决方案)

2. 开始

将TPUnit中demo目录下的bootstrap.php文件复制到你的tests目录下。

在上一步的配置过程中,有一个“使用引导”的地方记得勾选并指定bootstrap.php文件所在目录。

由于ThinkPHP框架中坑爹的.class.php后缀名,导致NB 8.1以后版本虽然可以生成测试方法骨架,但文件名比较别扭,形式如ClsXYZ.classTest.php。

3. 支持的特性

3.1 基本的UnitTest

最经典的例子:

参看上面的参考配置文档中:基于Netbeans的PHPUnit环境配置

3.2 DB UnitTest

参看本项目demo目录 /demo/Application/Common/Model/UrlModelTest.php 文件。

DBUnit主要由四种断言构成,目前TPUnit已支持TP对这四种断言的支持:

  • 对表中数据行的数量作出断言
  • 对表的状态作出断言
  • 对查询的结果作出断言
  • 对多个表的状态作出断言

具体请查看https://github.com/web3d/TPUnit/blob/master/demo/Application/Common/Model/UrlModelTest.php

其中,{{%url}} 是从Yii2框架中引入的表名前缀替换方案,{{和}}是表名界定符,%是表名前缀占位符。

4. 修订日志:

  • [修复] 基于NB已经可以创建TP框架下的测试文件,但文件名与类名不对应,修复了测试类自动加载机制 [2016-05-20]

实践记录

目录
相关文章
|
缓存 前端开发 JavaScript
PHP - Laravel 创建项目到服务器(nginx、apache)运行(附带目录结构)
PHP - Laravel 创建项目到服务器(nginx、apache)运行(附带目录结构)
372 0
|
4月前
|
PHP
PHP——安装ThinkPHP框架报错
PHP——安装ThinkPHP框架报错
35 0
|
7月前
|
缓存 PHP 开发工具
PHP 开发者该知道的 5 个 Composer 小技巧
PHP 开发者该知道的 5 个 Composer 小技巧
|
PHP
FastAdmin扩展PHPEXCEL,PHP7.3高版本兼容问题
FastAdmin扩展PHPEXCEL,PHP7.3高版本兼容问题
381 0
FastAdmin扩展PHPEXCEL,PHP7.3高版本兼容问题
|
缓存 Linux PHP
PHP快速入门14-Composer包管理安装与使用,附常见的20个使用例子
PHP Composer 是 PHP 的一个包管理工具,它被广泛用于 PHP 应用程序的依赖管理。Composer 可以自动查找和下载 PHP 应用所需要的第三方类库和组件,并将它们集成到应用程序中。
372 0
|
PHP Apache Windows
工银e生活开发脱坑日志(5)wampServer集成环境配置php ts版php_infosec.dll文件
工银e生活开发脱坑日志(5)wampServer集成环境配置php ts版php_infosec.dll文件
161 0
|
前端开发 PHP
laravel6.*实现html转PDF导出下载(barryvdh/laravel-dompdf)
laravel6.*实现html转PDF导出下载(barryvdh/laravel-dompdf)
444 0
laravel6.*实现html转PDF导出下载(barryvdh/laravel-dompdf)
|
设计模式 前端开发 PHP
PHP的Laravel与Composer部署项目时常见问题
我们在部署PHP项目时,其实大部分的PHP项目会创建环境检测与一键Install页面。 但是,有许多的项目还采用了Composer部署。
363 0
|
自然语言处理 NoSQL 关系型数据库
使用 Phpize 安装 PHP 的常用功能扩展模块 | 学习笔记
快速学习使用 Phpize 安装 PHP 的常用功能扩展模块
453 0
使用 Phpize 安装 PHP 的常用功能扩展模块 | 学习笔记
|
安全 前端开发 关系型数据库
PHP:ThinkPHP5.0下载安装和各种配置
PHP:ThinkPHP5.0下载安装和各种配置
903 0