Phpunit 测试ThinkPHP (原创)
来源:互联网 发布:ipad看最新电影软件 编辑:程序博客网 时间:2024/05/22 08:14
使用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 New�8mo�o@ot-family:"Times New Roman";color:#3F5FBF'> </blacklist>-->
<whitelistaddUncoveredFilesFromWhitelist="true">
<directorysuffix="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文件的目录-->
<logtype="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-->
<logtype="coverage-clover"target="test/Log/coverage/coverage.xml"/>
</logging>
</phpunit>
- Phpunit 测试ThinkPHP (原创)
- phpunit 测试 thinkphp action
- PHPUnit 测试 thinkphp
- ThinkPHP网站用Phpunit 测试
- PHP单元测试之PHP测试、PHPUnit的使用、在ThinkPHP中使用PHPUnit
- phpunit thinkphp model单元测试
- phpunit thinkphp model
- Zend Studio 运行phpunit (原创)
- PHPUnit(白盒测试)
- phpunit 自动化测试
- 使用 PHPUnit 进行测试
- phpUnit 测试例子
- 编写 PHPUnit 测试
- zendstudio做phpunit测试
- phpunit测试框架
- PHPUnit从零开始(2):编写 PHPUnit 测试
- PHPunit
- phpunit
- 查询整个数据库中某个特定值所在的表和字段的方法
- 探讨C++ 变量生命周期、栈分配方式、类内存布局、Debug和Release程序的区别
- C++设计模式之二十二:Template Method(模板方法模式)
- 隔离级别(Isolation Levels)-------可重复读(RR-Repeatable Read)
- dlopen错误
- Phpunit 测试ThinkPHP (原创)
- hudson启动,建slave
- C语言利用OPENSSL 生成定制位的随机数
- 【转】【关于 A^x = A^(x % Phi(C) + Phi(C)) (mod C) 的若干证明】【指数循环节】
- IOS使用webview加载本地HTML文件,压入JS
- 死锁产生的必要条件以及解决方案
- c,c++各自特点
- 最大匹配,花树开花算法
- ExtJS4.0中Excel文件导入grid