ThinkPHP配置PHPUnit

參考連接: http://blog.coinidea.com/web%E5%BC%80%E5%8F%91/php-1096.htmlphp

版本描述

PHP: 5.3html

PHPUnitweb

ThinkPHP 3.1.3thinkphp

IDE: PHPStorm 10 (推薦)瀏覽器

PHPStorm配置PHPUnit

詳見博文:app

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

ThinkPHP部署

官方代碼下載:ide

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

初始化站點:函數

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');
?>

首次訪問以後,生成如下目錄結構:

image

在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();

該區分站點運行與測試用例。

image

<?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效果:

image

在TestSayHello中加入測試用例:

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

運行效果

運行Test.php效果以下:

image

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

相關文章
相關標籤/搜索