ThinkPHPUnit
============
在[ThinkPHP](http://www.thinkphp.cn/)开源框架上,使用[PHPUnit](https://github.com/sebastianbergmann/phpunit/)作为测试框架。
##安装和样例代码
###安装方法
```
shell> cd /path/to/thinkphp/app/Lib/ORG/
shell> git clone https://github.com/gaoermai/ThinkPHPUnit.git
```
###创建TestAction
在 **/path/to/thinkphp/app/Lib/Action** 下(如有分组请自行决定放在哪个分组下,或者可以创建一个专门的test分组),创建 **TestAction.class.php** ,代码如下:
import('@.ORG.ThinkPHPUnit.ThinkPHPUnitAction');
class TestAction extends ThinkPHPUnitAction {
protected $_message_render = self::MESSAGE_RENDER_ECHO;
protected function _testExample() {
$this->assertLessThan(1, 2, '可以使用中文作为错误提示');
$this->assertLessThan(2, 1);
$this->assertContainsOnly('string', array('1', '2', 3));
}
}
访问 http://example.com/thinkphpunit/test (注意:无需把URL指向特定的方法),如果一切顺利的话,就可以看到下面提示:
[Failure]: 可以使用中文作为错误提示
Failed asserting that 2 is less than 1.
CLASS: TestAction
METHOD: testExample
LINE: 10
[Failure]: Failed asserting that Array (
0 => '1'
1 => '2'
2 => 3
) contains only values of type "string".
CLASS: TestAction
METHOD: testExample
LINE: 12
##使用帮助
###创建测试用例Action
ThinkPHPUnit需要独立的Action文件,继承ThinkPHPUnitAction类。
类似这样:
```
class TestAction extends ThinkPHPUnitAction {}
```
类中的方法,只有类似 **public testFuncName()** 或者 **protected _testFuncName()** 这样命名的,才会被认为是包含测试用例的测试方法。 **ThinkPHPUnitAction::index()** 能够自动地逐一执行这些方法并返回结果。
###使用哪种断言错误记录方式
定义记录错误的方式使用下面代码:
class TestAction extends ThinkPHPUnitAction {
protected $_message_render = self::MESSAGE_RENDER_ECHO;
}
ThinkPHPUnit支持4种断言错误输出常量:
* ThinkPHPUnitAction::MESSAGE_RENDER_EXCEPTION:断言错误时以使用抛出异常(默认)
* ThinkPHPUnitAction::MESSAGE_RENDER_ERROR_LOG:断言错误时以PHP日志方式记录错误
* ThinkPHPUnitAction::MESSAGE_RENDER_VARDUMP:断言错误时以使用var_dump()函数输出
* ThinkPHPUnitAction::MESSAGE_RENDER_ECHO:断言错误时以使用文本输出方式(推荐)
在测试环境中,推荐使用 **ThinkPHPUnitAction::MESSAGE_RENDER_ECHO** 方式输出错误。
如果是生产环境,那么建议:
* 如果有安全屏蔽测试用的Action,那么仍然可以采用 **ThinkPHPUnitAction::MESSAGE_RENDER_ECHO** 方式;
* 如果没有,那么建议采用 **ThinkPHPUnitAction::MESSAGE_RENDER_ERROR_LOG** 。
###如何测试异常?
在[PHPUnit](http://phpunit.de/manual/current/en/writing-tests-for-phpunit.html#writing-tests-for-phpunit.exceptions)的官方文档中,有描述通过类似下面的注释代码来测试异常:
```
class ExceptionTest extends PHPUnit_Framework_TestCase
{
/**
* @expectedException InvalidArgumentException
*/
public function testException()
{
}
}
```
但是,在Web环境中,是没有办法通过注释标注的方式来测试异常的。从ThinkPHPUnit v0.2版本开始,提供了新的方法来对异常进行输出:
```
protected function _testException() {
try {
throw new InvalidArgumentException();
}catch (InvalidArgumentException) {
}catch (Exception $e) {
$this->render_exception($e);
}
}
```
使用这种方法,可以输出预期异常并输出。
###生产环境部署须知
在生产环境中,为了限制普通用户访问测试用例,可以采用以下几种安全措施。
####设置HTTP Authentication
HTTP Authentication是一种HTTP基础的用户名密码验证方式。从ThinkPHPUnit v0.2版本开始,内置了这种验证方式。配置方法:
class TestAction extends ThinkPHPUnitAction {
protected $_http_auth_username = 'YOUR USERNAME HERE';
protected $_http_auth_password = 'YOUR PASSWORD HERE';
}
为安全起见,建议将用户名和密码都设置成超过16位的大小写数字混合的字符串形式。
默认的,当常量 **APP_DEBUG** 为true时,HTTP验证不开启。
####采用随机的Action名
不采用常见的如 **TestAction** 这样的名称,能够有效的避免非法用户猜测测试用例的网址。
####在Web服务器上限定IP等措施
更加安全的做法,可以在Web服务(如Apache、Nginx)上,对测试用例所在的网址进行IP过滤等。这些方法属于Web服务的讨论范围,请阅读相关文档。
没有合适的资源?快使用搜索试试~ 我知道了~
thinkphp网站测试工具
共256个文件
php:209个
yml:20个
dist:17个
需积分: 48 20 下载量 201 浏览量
2015-04-26
22:44:11
上传
评论
收藏 615KB ZIP 举报
温馨提示
单元测试能做,首先依赖于编写的代码,写的随意的代码,是很难做单测的,所以,第一项工作就是要编写可以测试的代码,所以开发的时候就要考虑怎么测试,如果能遵循测试驱动开发,敲码前先写单测,那更好; 第二项工作,就是单测的编写了。往往打桩是比较麻烦的,但是越大的系统,依赖的外部组件和系统越多,不打桩根本无法测试。目前phpunit有支持打桩。 第三,如果是旧项目,代码写的随意,缺少封装,过程式的,甚至是面包屑代码,如何测试?我能想到的,要么重构代码,要么就得做大量的打桩工作;即使如此,也不能保证真的就能对这些代码进行单测。
资源推荐
资源详情
资源评论
收起资源包目录
thinkphp网站测试工具 (256个子文件)
bootstrap.min.css 101KB
bootstrap-responsive.min.css 16KB
style.css 1KB
dashboard.html.dist 3KB
file.html.dist 2KB
directory.html.dist 2KB
mocked_class.tpl.dist 2KB
TestCaseMethod.tpl.dist 1KB
file_item.html.dist 827B
phpunit.xml.dist 819B
directory_item.html.dist 779B
mocked_static_method.tpl.dist 649B
mocked_object_method.tpl.dist 644B
method_item.html.dist 600B
wsdl_class.tpl.dist 181B
unmocked_clone.tpl.dist 159B
coverage_bar.html.dist 142B
mocked_clone.tpl.dist 132B
wsdl_method.tpl.dist 60B
trait_class.tpl.dist 45B
highcharts.js 121KB
jquery.min.js 90KB
bootstrap.min.js 31KB
html5shiv.js 2KB
README.md 5KB
Assert.php 89KB
Functions.php 63KB
TestCase.php 52KB
TestRunner.php 33KB
Configuration.php 32KB
XML.php 29KB
Command.php 28KB
TestSuite.php 28KB
Generator.php 26KB
TestResult.php 24KB
Parser.php 23KB
Token.php 22KB
CodeCoverage.php 22KB
File.php 21KB
File.php 21KB
Test.php 19KB
ResultPrinter.php 17KB
Inline.php 15KB
Stream.php 15KB
JUnit.php 15KB
GlobalState.php 14KB
Autoload.php 14KB
Clover.php 13KB
Directory.php 12KB
ParserTest.php 11KB
PHP.php 11KB
Text.php 11KB
Class.php 11KB
Autoload.php 10KB
Util.php 10KB
Filter.php 10KB
Type.php 10KB
Matcher.php 10KB
ResultPrinter.php 10KB
InlineTest.php 9KB
Node.php 9KB
Renderer.php 9KB
PhptTestCase.php 9KB
ThinkPHPUnitAction.class.php 8KB
Diff.php 8KB
Factory.php 8KB
MockBuilder.php 8KB
TicketListener.php 7KB
Dashboard.php 7KB
JSON.php 7KB
TAP.php 7KB
HTML.php 7KB
Getopt.php 7KB
IsEqual.php 7KB
Logger.php 7KB
InvocationMocker.php 6KB
Array.php 6KB
Not.php 6KB
InvocationMocker.php 6KB
Autoload.php 6KB
Constraint.php 6KB
Printer.php 6KB
Iterator.php 6KB
IsIdentical.php 6KB
BaseTestRunner.php 6KB
Object.php 6KB
ComparatorFactory.php 6KB
Static.php 6KB
Scalar.php 6KB
IsType.php 5KB
Parameters.php 5KB
StandardTestSuiteLoader.php 5KB
And.php 5KB
TestFailure.php 5KB
DumperTest.php 5KB
Directory.php 5KB
Xor.php 5KB
NamePrettifier.php 5KB
TraversableContains.php 5KB
Or.php 5KB
共 256 条
- 1
- 2
- 3
资源评论
慕斯先生
- 粉丝: 79
- 资源: 26
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 同态加密python.zip
- 基于Python的PCA人脸识别算法的原理及实现代码详解+源码+详细代码解析+开发文档+数据(毕业设计&课程设计&项目开发)
- Decision tree20240105(1).ipynb
- zuoyezuoyezuoye
- zuoyezuoyezuoye
- 机械设计电机转子装配设备sw22非常好的设计图纸100%好用.zip
- 作业作业作业作业作业作业
- xdotool.c
- RLMD鲁棒性局部均值分解信号分量可视化(Matlab完整源码和数据)
- Screenshot_2024-04-26-17-17-26-36_9d26c6446fd7bb8e41d99b6262b17def.jpg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功