对PHP开发者来说,单元测试这个名词也许有些陌生,但是实际上我们却常常在自发的进行着单元测试。

如果你总是一边添加代码一边不断地在 刷新着页面,那么,单元测试早已融入了你的开发中。是的,单元测试其实就是通过尽可能早尽可能快的进行测试来把错误扼杀在摇篮中的,不过使用的,是自动化 的工具。根据TDD(测试驱动开发)的思想,我们在一个功能开始之前就可以创建它的测试代码,然后通过不断的测试、和添加功能来不断的完善它,在这个过程 中,我们对需求和编码的理解会变得更为深入。

PHP开发者的单元测试工具包

在PHP领域,单元测试的工具主要有 PHPUNIT,PHPUNIT2和SimpleTest三种。其中PHPUNIT在功能上很简单,不算完善;PHPUNIT2是专门为PHP5写的单元 测试工具,在结构和功能上都向Junit看齐;而SimpleTest则是一套非常实用的测试工具,其中的webTest支持对web程序界面的测试,是 Easy最为推荐的一款测试工具。在本文中,我们选择SimpleTest进行介绍。

相关知识:PHPUNIT2也是一款很好的工具,尤其是架构上有很多值得圈点之处,希望将来能有机会在专门的文章中和大家分享。

SimpleTest:就是这么Simple

安装SimpleTest很简单,上sf.net上下载一个源码包,然后解压到web目录下就可以使用了,这里就不多说。

下面我们先来看个例子:编写一个测试,检查一个网站是否可以访问。

首先我们引入要用到的文件:

代码列表:

require_once( ’../simpletest/unit_tester.php’ );
require_once( ’../simpletest/web_tester.php’ );
require_once(’../simpletest/reporter.php’);

然后我们创建一个测试类:

代码列表:

class TestOfSite extends WebTestCase
{
function TestOfSite()
{
$this-〉WebTestCase(’测试’);
}

function testSite()
{
$this-〉get( ’http://howgo.net/prettyface/display.php’ );
$this-〉assertTitle(’.: 漂亮脸蛋 :.’ );
}
}

首先我们扩展了webTestCase类,这样我们就可以自动获得测试web的能力,然后在构造函数中我们直接使用基类的,只是把标题传给它。接着我们就该写测试方法了,测试方法都是以‘test’开头的,用以识别在我们运行测试的时候,类中哪些方法要进行调用。

而$this-〉get将取得网页的内容,我们指定它的标题为“.: 漂亮脸蛋 :.”。接着我们要做的就是实例化这个类的对象,并运行它。

代码列表:

$test = &new TestOfSite();
$test-〉run(new HtmlReporter());

下边是运行结果:

如果测试出错则会出现下边的界面:

到这里一个简单的测试就算完成了。

实战演习 – 一个Login测试

下面我们进入实战,在这个基础上完成一个login的测试。这次我们先贴出完整的代码:

代码列表:

require_once( ’../simpletest/unit_tester.php’ );
require_once( ’../simpletest/web_tester.php’ );
require_once(’../simpletest/reporter.php’);

class TestOfLogin extends WebTestCase
{
function TestOfLogin()
{
$this-〉WebTestCase(’Login测试’);
}

function testLoginOk()
{
// 取得页面
$this-〉get( ’http://howgo.net/prettyface/login.php’ );

// 添加测试表项
$this-〉setField( ’name’ , ’Easy’ );
$this-〉setField( ’pass’ , ’******’ );

// 提交
$this-〉clickSubmit( ’提交’ );

// 察看提交后返回页面是否正确
$this-〉assertWantedPattern( ’/成功登录/’ );

// 点击页面链接
$this-〉clickLink( ’点击这里进入管理页面’ );

// 察看指定页面标题和关键内容
$this-〉assertTitle(’ADMINCP’ );
$this-〉assertWantedPattern( ’/请选择要进行的任务/’ );

// 退出登陆
$this-〉clickLink( ’退出管理’ );
$this-〉clickLink

来源:http://www.cnblogs.com/linzhenjie/archive/2012/11/17/2774261.html

PHP 单元测试工具 SimpleTest相关推荐

  1. PHP 单元测试工具 SimpleTest

    对PHP开发者来说,单元测试这个名词也许有些陌生,但是实际上我们却常常在自发的进行着单元测试. 如果你总是一边添加代码一边不断地在 刷新着页面,那么,单元测试早已融入了你的开发中.是的,单元测试其实就 ...

  2. python 单元测试 工具_Django单元测试工具test client使用详解

    The test client test client是一个python类,来模拟一个简单的"哑"浏览器,允许你来测试你的view函数.你可以使用test client完成下列事情 ...

  3. 测试函数JavaScript单元测试工具使用—QUnit

    发一下牢骚和主题无关: 本文绝大部分来自于http://www.oncoding.cn/2010/javascript-unit-testing-qunit/,由于最新版的QUNIT更改了API接口, ...

  4. Openstack_单元测试工具 tox

    目录 目录 扩展阅读 Openstack 的单元测试工具 单元测试工具使用流程 tox toxini 参考文章 扩展阅读 Python Mock的入门 Openstack 的单元测试工具 unitte ...

  5. 在.NET开发中的单元测试工具之(1)——NUnit

    NUnit介绍 NUnit是一个专门针对于.NET来写的单元测试框架,它是xUnit体系中的一员,在xUnit体系中还有针对Java的JUnit和针对C++的CPPUnit,在开始的时候NUnit和x ...

  6. SAP UI5 初学者教程之二十七 - SAP UI5 应用的单元测试工具 QUnit 介绍试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...

  7. SAP UI5 应用开发教程之二十七 - SAP UI5 应用的单元测试工具 QUnit 介绍

    Jerry 在之前做 SAP UI5 标准开发和现在使用 Angular 开发 SAP Spartacus 应用时,我们团队的开发规范就是,每增添一个新的前端 feature,必须要用一个新增的单元测 ...

  8. 常见单元测试工具介绍

    1.       C/C++语言开发的首选利器- C++Test 以前在windows平台下的开发,使用的框架主要是MFC,以及console工程(基于win32SDK),属于纯C/C++开发的范畴. ...

  9. 说实话,写了这么多程序了,还从来没有用JUnit作为单元测试工具测试过,今天就来学习一下

    1.    说实话,写了这么多程序了,还从来没有用JUnit作为单元测试工具测试过,心理面感到真的是惭愧.原来的所有测试,我都是通过在控制台打印输出语句看结果,这样就可以根据自己打印的信息自己去判断, ...

最新文章

  1. 简单介绍基于PostgreSql 别名区分大小写的问题
  2. LeetCode Rotate Image(矩阵的旋转)
  3. ORA-12545: Connect failed because target host or object does not exist
  4. libgdx学习记录27——线段与线段相交检测
  5. 如何在Elasticsearch中进行深分页
  6. 【转】彻底理解cookie,session,token
  7. 学php要先学css吗,学PHP是不是就必须学htmlcssjs
  8. SpringBoot2.0 整合 Dubbo框架 ,实现RPC服务远程调用
  9. 用css3和jQuery制作精美的表单
  10. POJ 2367 Genealogical tree【拓扑排序】
  11. Qt同时加载多个项目
  12. 树算法系列之四:XGBoost
  13. html状态栏透明,HTML – 如何使我的导航栏略微透明?
  14. WebLogic安装说明
  15. chrome浏览器完整保存整个网页 可离线访问
  16. QEMU虚拟磁盘资料
  17. QQ空间无法点赞或者QQ空间点赞被取消
  18. 李开复--生命是最严厉的导师
  19. 【C++】计算两个日期之间的差
  20. 【田姓】宗谱——【郡望堂号】

热门文章

  1. 08_添加图例、添加标题(Adding a Title)
  2. B14_NumPy算术函数( add(),subtract(),multiply() 和 divide()、reciprocal()、power()、mod())
  3. 2、运行.py文件、字符串、保留字符、行和缩进、多行语句、引号、注释、等待用户输入、同一行显示多条语句、命令行参数
  4. SpringBoot中Tomcat配置(学习SpringBoot实战)
  5. 2.Cocos2d-x-3.2编写3d打飞机,项目代码总结
  6. Mysql时间数据分段累加求和案例之子查询与SUM窗口函数
  7. 文本处理利器Linux Awk这样入门☛常见变量的使用
  8. oracle触发器的测试,ORACLE触发器的测试
  9. python字符串成熟编码_python字符串转公式两种方法获取网页编码python版
  10. SQLServer 游标简介与使用说明[转]