@DFFuture
2016-05-22T04:53:00.000000Z
字数 1253
阅读 2123
Thinkphp
PHPUnit
Thinkphp版本:3.2.3
安装工具: composer
PHPUnit:snowair/think-phpunit
PHP IDE:PHPStrom
直接编辑Thinkphp根目录下的composer.json
,添加
"autoload": {
"classmap": ["Application","ThinkPHP/Library"]
},
"require-dev": {
"snowair/think-phpunit": "dev-master"
},
在根目录下打开bash界面,首次安装输入
$ composer install
更新输入
$ composer update
如果在项目中增加了新的class,重建autoload
$ composer dump-autoload
安装成功,在根目录下出现vender
文件夹和compser.lock
文件
打开文件-》设置
选择语言与框架-》PHP
,设置Interpreter
选择语言与框架-》PHP-》PHPUnit
,选择autoloader
地址
这里我只测试了Controller
在根目录下新建Test文件夹,用来存放测试文件,
新建IndexControllerTest.php
用来测试IndexController
在IndexController
中创建一个hello
方法
public function hello() {
$this->show("hello world");
}
测试代码如下,测试hello
方法
<?php
namespace Home\Controller;
class IndexControllerTest extends \PHPUnit_Framework_TestCase
{
use \Think\PhpUnit; // 只有控制器测试类才需要它
static public function setupBeforeClass()
{
// 下面四行代码模拟出一个应用实例, 每一行都很关键, 需正确设置参数
self::$app = new \Think\PhpunitHelper();
self::$app->setMVC('domain.com','Home','Index');
self::$app->setTestConfig(['DB_NAME'=>'test', 'DB_HOST'=>'127.0.0.1',]); // 一定要设置一个测试用的数据库,避免测试过程破坏生产数据
self::$app->start();
}
/**
* 控制器action输出测试示例
*/
public function testHello()
{
$output = $this->execAction('hello');
$this->assertEquals('hello world',$output);
}
}
测试数据库与Thinkphp本身配置的数据库要不同,否则会报错
右击运行测试程序,测试成功