zoukankan      html  css  js  c++  java
  • PHPUnit整合ThinkPHP的库TPUnit

    项目地址: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框架打补丁 将ThinkThink类的start方法最后一行改为 !constant('NO_NEED_RUN_APP') && App::run();,同时 ThinkApp::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]

    实践记录

  • 相关阅读:
    C语言程序设计第一次作业
    C语言I博客作业09
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言II博客作业03
    C语言II博客作业02
    C语言II博客作业01
    学期总结
  • 原文地址:https://www.cnblogs.com/x3d/p/thinkphp-unit.html
Copyright © 2011-2022 走看看