@DFFuture
2016-05-22T04:53:00.000000Z
字数 1253
阅读 2223
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方法
<?phpnamespace 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本身配置的数据库要不同,否则会报错
右击运行测试程序,测试成功
