参考连接: 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