[关闭]
@DFFuture 2016-05-22T04:53:00.000000Z 字数 1253 阅读 2123

Thinkphp:配置PHPUnit单元测试

Thinkphp PHPUnit


准备

Thinkphp版本:3.2.3
安装工具: composer
PHPUnit:snowair/think-phpunit
PHP IDE:PHPStrom

使用Composer安装单元测试辅助类

直接编辑Thinkphp根目录下的composer.json,添加

  1. "autoload": {
  2. "classmap": ["Application","ThinkPHP/Library"]
  3. },
  4. "require-dev": {
  5. "snowair/think-phpunit": "dev-master"
  6. },

在根目录下打开bash界面,首次安装输入

  1. $ composer install

更新输入

  1. $ composer update

如果在项目中增加了新的class,重建autoload

  1. $ composer dump-autoload

安装成功,在根目录下出现vender文件夹和compser.lock文件

PHPStorm中配置PHPUnit

打开文件-》设置
选择语言与框架-》PHP,设置Interpreter
此处输入图片的描述
选择语言与框架-》PHP-》PHPUnit,选择autoloader地址
此处输入图片的描述

测试

这里我只测试了Controller
在根目录下新建Test文件夹,用来存放测试文件,
新建IndexControllerTest.php用来测试IndexController
IndexController中创建一个hello方法

  1. public function hello() {
  2. $this->show("hello world");
  3. }

测试代码如下,测试hello方法

  1. <?php
  2. namespace Home\Controller;
  3. class IndexControllerTest extends \PHPUnit_Framework_TestCase
  4. {
  5. use \Think\PhpUnit; // 只有控制器测试类才需要它
  6. static public function setupBeforeClass()
  7. {
  8. // 下面四行代码模拟出一个应用实例, 每一行都很关键, 需正确设置参数
  9. self::$app = new \Think\PhpunitHelper();
  10. self::$app->setMVC('domain.com','Home','Index');
  11. self::$app->setTestConfig(['DB_NAME'=>'test', 'DB_HOST'=>'127.0.0.1',]); // 一定要设置一个测试用的数据库,避免测试过程破坏生产数据
  12. self::$app->start();
  13. }
  14. /**
  15. * 控制器action输出测试示例
  16. */
  17. public function testHello()
  18. {
  19. $output = $this->execAction('hello');
  20. $this->assertEquals('hello world',$output);
  21. }
  22. }

测试数据库与Thinkphp本身配置的数据库要不同,否则会报错
右击运行测试程序,测试成功
此处输入图片的描述

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注