ThinkPHP配置PHPUnit

参考链接:
http://blog.coinidea.com/web%E5%BC%80%E5%8F%91/php-1096.html

版本描述

PHP: 5.3

PHPUnit

ThinkPHP 3.1.3

IDE: PHPStorm 10 (推荐)

PHPStorm配置PHPUnit

详见博文:

http://blog.coinidea.com/web%E5%BC%80%E5%8F%91/php-1088.html

ThinkPHP部署

官方代码下载:

http://www.thinkphp.cn/down.html

初始化站点:

http://www.thinkphp.cn/info/60.html

测试用例

本例中,根目录的index.php的配置如下:

<?php
define('APP_NAME', 'example');
define('APP_PATH', '../example/');
define('APP_PHPUNIT', false);
define('APP_DEBUG', true);
require('../ThinkPHP/ThinkPHP.php');
?>

首次访问之后,生成以下目录结构:

在example站点中新建文件夹,命名为“Testcase”。

测试Model

创建HelloModel.class.php:

<?php
 
class HelloModel extends Model
{
    public function sayHello()
    {
        print 'Hello';
        return 'Hello';
    }
}

在Test文件夹中新建Test.php文件作为PHPUnit,其中注意require ThinkPHP作为初始化框架环境,另外在Think.class.php中,修改

start()****函数中,****App::run()****为**** !APP_PHPUNIT && App::run();

该区分站点运行与测试用例。

<?php
define('APP_NAME', 'example');
define('APP_PATH', './../../example/');
define('APP_PHPUNIT', true);
require('./../../ThinkPHP/ThinkPHP.php');
class TestSayHello extends PHPUnit_Framework_TestCase {
 
    public function setUp() { }
 
    public function tearDown(){ }
 
}
在TestSayHello中加入测试用例:

public function testHelloModel()
{
    $hello = D('Hello');
    $this->assertTrue( $hello->sayHello('Hello') == 'Hello');
}

测试Action
修改IndexAction.class.php如下:

<?php
class IndexAction extends Action
{
    public function index()
    {
        $hello = D("Hello");
        return $hello->sayHello();
    }
}

浏览器访问Index效果:

在TestSayHello中加入测试用例:

public function  testHelloAction()
{
    $hello = new IndexAction();
    $this->assertTrue($hello->index() == 'Hello');
}

运行效果

运行Test.php效果如下:

Test通过,至此给ThinkPHP加上了单元测试。

—————————–

照着试了下,发现model无法使用,Common目录下自定义的一些函数也没有加载。研究了一下,觉得在Think.class.php中加APP_PHPUNIT的判断不太合理,不如在App.class.php中,在这儿添加: !APP_PHPUNIT && App::exec();

参考链接:
http://blog.coinidea.com/web%E5%BC%80%E5%8F%91/php-1096.html

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • @synthesize和@dynamic分别有什么作用?@property有两个对应的词,一个是 @synthes...
    笔笔请求阅读 3,655评论 0 1
  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,990评论 1 180
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,288评论 19 139
  • 傍晚,晚风习习,雨后的季夏没那么闷了,晚上略显凉,天气不是很好。可是,很难得暑假了,无论是形式还是内容上,今天我们...
    大白菜小豆腐阅读 3,736评论 2 2
  • 悟空驾着云头直奔天庭户部衙门,天上地下来往这一回并没有耗费太多的时间,这边太白金星正在等候着悟空。 “给,麻烦给俺...
    井冈山豆皮阅读 1,535评论 0 1

友情链接更多精彩内容