參考連接: 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 (推薦)瀏覽器
詳見博文:app
http://blog.coinidea.com/web%E5%BC%80%E5%8F%91/php-1088.html框架
官方代碼下載: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'); ?>
首次訪問以後,生成如下目錄結構:
在example站點中新建文件夾,命名爲「Testcase」。
建立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