ThinkPHP网站用Phpunit 测试

本文网址http://write.blog.csdn.net/postedit
使用phpunit 工具测试框架程序,最重要的是要在测试环境中模拟框架环境
比如 配置文件,加载模块,session,cookie 等等,如果没有特别需求,尽量用thinkphp 系统加载所有环境,
 
1、测试工具包
  一个专门测试thinkphp 的封装工具,在编写测试代码时把工具包加载到测试文件中
工具包:有两部分组成:核心包Library,项目包:Thinkphp项目名称。
 
核心包Library 主要由以下文件组成
#测试控制器Action 的基类,所有测试action 的case 都必须继承此类
BaseActionTest.php
#测试页面(Html)的基类,所有测试Html的case 都必须继承此类
BaseHtmlTest.php
#测试业务(Service)的基类,所有测试Service的case 都必须继承此类
BaseModelTest.php
# 测试控制器工具类
Controller.php
HttpWebRequest2.php
HttpWebRequest.php
IHttpWebRequest.php
#测试控制器时设置session 文件
Setsession.php
# Thinkphp 项目入口文件
TPConfig.php
 
项目包 主要由以下文件组成
#测试控制器文件目录
Action
#测试页面文件目录
Html
#测试业务文件目录
Service
#测试控制器文件时必须加载的初始化文件
ActionInit.php
#测试页面文件时必须加载的初始化文件
HtmlInit.php
#测试业务文件时必须加载的初始化文件
ServiceInit.php
#测试项目的配置文件
Config.php
 
2、修改Thinkphp代码
1、打开ThinkPHP/Lib/Core/App.class.php 文件,此处修改,主要是为了测试model 类
,找到App::exec()。
修改为:
if(!defined('APP_PHPUNIT_MOLDE') || !APP_PHPUNIT_MOLDE){
    App::exec();
}
 
 
2、修改项目配置文件,以便加载测试数据库
打开{项目名称}/Config/config.php 文件。
文件头部写入:
if(defined('APP_PHPUNIT') || APP_PHPUNIT == true) {
    $_systemConfig = require APP_ROOT_PATH.'testsystemconfig.php';
} else  {
    $_systemConfig = require APP_ROOT_PATH.'systemconfig.php';
}
3、Thinkphp 测试用例
在测试项目目录Service目录下创建文件UserServiceTest.php,内容如下
<?php
require_once'PHPUnit/Autoload.php';
require_once'../ServiceInit.php';
/**
 * 会员业务测试类
 *
 */
class UserServiceTest extends BaseModelTest
{
   
    /**
     * 测试管理员登录
     */
    public function testLogin()
    {
        //echo THINK_PATH;
        $s_user = Ap::GetService('User');
       
        $_rtn =$s_user->Login('admin','admin');
        $this->assertEquals(true,$_rtn);
    }
   
    /**
     * 验证用户名是否唯一检查
     */
    public function testCheck()
    {
        //echo THINK_PATH;
        $s_user = Ap::GetService('User');
        $_rtn =$s_user->Login('admin','admin');
        $this->assertEquals(true,$_rtn);
    }
   
}
 
?>
 
切换到Service目录下,命令行输入:phpunit  UserServiceTest.php
 
特别说明:在正式使用时,一般都不用在代码中直接加载
require_once'PHPUnit/Autoload.php';
require_once'../ServiceInit.php';
正式使用时,都会有工具自动加载,或phpunit.xml 已经配置好加载文件
er NewSmoo@ott-family:"Times New Roman";color:#3F5FBF'>     </blacklist>
     -->
     
     <whitelist addUncoveredFilesFromWhitelist="true">
      <directory suffix="Service.class.php">src/Service</directory>
      <!-- 
      <file>ArrayTest.php</file>
      //排除文件
      <exclude>
      <directorysuffix=".php">action/lib</directory>
      <directorysuffix=".php">model</directory>
      <file>action/lib/Loginxxx.php</file>
      </exclude>
      -->
    </whitelist>
   
    </filter>
  
   <!-- 测试结果:代码覆盖率,测试结果
    <logging>
      <logtype="coverage-html" target="/tmp/report"charset="UTF-8"
          highlight="false" lowUpperBound="35"highLowerBound="70"/>
      <logtype="coverage-clover" target="/tmp/coverage.xml"/>
      <logtype="coverage-php" target="/tmp/coverage.serialized"/>
      <logtype="coverage-text" target="php://stdout"showUncoveredFiles="false"/>
      <logtype="json" target="/tmp/logfile.json"/>
      <logtype="tap" target="/tmp/logfile.tap"/>
      <logtype="junit" target="/tmp/logfile.xml"logIncompleteSkipped="false"/>
      <logtype="testdox-html" target="/tmp/testdox.html"/>
      <logtype="testdox-text" target="/tmp/testdox.txt"/>
    </logging>
    -->
   <logging>
        <!-- target(report/html)生成html 文件的目录-->
        <log type="coverage-html"target="test/Log/html"charset="UTF-8"yui="true"highlight="false"lowUpperBound="35"highLowerBound="70"/>
        <!-- target(report/coverage/coverage.xml) 生成xml的文件名,生成的xml 用图标插件解析xml-->
        <log type="coverage-clover"target="test/Log/coverage/coverage.xml"/>
    </logging>
</phpunit>
本文网址http://write.blog.csdn.net/postedit

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕斯先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值