网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > PHP > PHP技术进阶 > 利用单元测试对PHP 代码进行检查  

利用单元测试对PHP 代码进行检查

2006-11-06  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

HTML 测试

网管u家bitscn.net

    对整个 PHP 应用程序进行测试的下一个步骤是对前端的超文本标记语言(HTML)界面进行测试。要进行这种测试,我们需要一个如下所示的 Web 页面。 网管bitscn_com


图 1. 测试 Web 页面
测试 Web 页面

网管有家bitscn.net

这个页面对两个数字进行求和。为了对这个页面进行测试,我们首先从单元测试代码开始入手。

网管有家bitscn.net


清单 10. TestPage.php

<?php
require_once 'HTTP/Client.php';
require_once 'PHPUnit2/Framework/TestCase.php';

class TestPage extends PHPUnit2_Framework_TestCase
{
  function get_page( $url )
  {
    $client = new HTTP_Client();
    $client->get( $url );
    $resp = $client->currentResponse();
    return $resp['body'];
  }
  function test_get()
  {
    $page = TestPage::get_page( 'http://localhost/unit/add.php' );
    $this->assertTrue( strlen( $page ) > 0 );
    $this->assertTrue( preg_match( '/<html>/', $page ) == 1 );
  }
  function test_add()
  {
    $page = TestPage::get_page( 'http://localhost/unit/add.php?a=10&b=20' );
    $this->assertTrue( strlen( $page ) > 0 );
    $this->assertTrue( preg_match( '/<html>/', $page ) == 1 );
    preg_match( '/<span id="result">(.*?)<\/span>/', $page, $out );
    $this->assertTrue( $out[1]=='30' );
  }
}
?>
 
网管联盟bitsCN@com

网管下载dl.bitscn.com

    这个测试使用了 PEAR 提供的 HTTP Client 模块。我发现它比内嵌的 PHP Client URL Library(CURL)更简单一点儿,不过也可以使用后者。

网管u家www.bitscn.net

    有一个测试会检查所返回的页面,并判断这个页面是否包含 HTML。第二个测试会通过将值放到请求的 URL 中来请求计算 10 和 20 的和,然后检查返回的页面中的结果。 中国网管联盟bitsCN.com

这个页面的代码如下所示。 网管下载dl.bitscn.com


清单 11. TestPage.php

<html><body><form>
<input type="text" name="a" value="<?php echo($_REQUEST['a']); ?>" /> +
<input type="text" name="b" value="<?php echo($_REQUEST['b']); ?>" /> =
<span id="result"><?php echo($_REQUEST['a']+$_REQUEST['b']); ?></span>
<br/>
<input type="submit" value="Add" />
</form></body></html>
 中国网管联盟bitsCN.com 

网管下载dl.bitscn.com

    这个页面相当简单。两个输入域显示了请求中提供的当前值。结果 span 显示了这两个值的和。<span> 标记标出了所有区别:它对于用户来说是不可见的,但是对于单元测试来说却是可见的。因此单元测试并不需要复杂的逻辑来找到这个值。相反,它会检索一个特定 <span> 标记的值。这样当界面发生变化时,只要 span 存在,测试就可以通过。 网管网www.bitscn.com

    与前面一样,首先编写测试用例,然后创建一个失败版本的页面。我们对失败情况进行测试,然后修改页面的内容使其可以工作。结果如下: 网管论坛bbs_bitsCN_com


清单 12. 测试失败情况,然后修改页面

% phpunit TestPage.php
PHPUnit 2.2.1 by Sebastian Bergmann.

..

Time: 0.25711488723755

OK (2 tests)
%
 中国网管论坛bbs.bitsCN.com 

网管u家u.bitscn@com

这两个测试都可以通过,这就意味着测试代码可以正常工作。

网管u家u.bitscn@com

 

网管有家bitscn.net

网管论坛bbs_bitsCN_com

TAGs   进行   检查   代码   单元   测试   利用   可以   我们   编写   一个      
 上一篇:五个常见 PHP 数据库问题   下一篇:PHP 应用程序配置模式
利用单元测试对PHP 代码进行检查 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: