尽管Yii2提供了 Codeception
测试框架,但是习惯了phpunit的原生写法,还是决定在Yii2项目中引入phpunit进行单元测试。
一、安装phpunit
根据项目使用的php版本选择合适的phpunit,具体参考:https://phpunit.de/
二、创建测试目录test
在test目录下创建bootstrap.php文件
<?php
define('YII_ENV', 'test');
defined('YII_DEBUG') or define('YII_DEBUG', true);
require_once(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
require __DIR__ .'/../vendor/autoload.php';
$config = require '../config/web.php';
(new yii\web\Application($config));
三、编写测试用例
<?php
use PHPUnit\Framework\TestCase;
use app\models\Order;
class MyTest extends TestCase{
protected $order;
public function setUp()
{
parent::setUp(); // TODO: Change the autogenerated stub
$this->order = Order::find()->asArray()->one();
}
public function testOrder(){
$this->assertEquals(20, count($this->order));
}
}
四、运行测试
[xiao@xxx-test www]$ phpunit --bootstrap ./bootstrap.php MyTest.php
PHPUnit 5.6.2 by Sebastian Bergmann and contributors.
. 1 / 1 (100%)int(20)
Time: 941 ms, Memory: 32.50MB
OK (1 test, 1 assertion)
磨刀不误砍柴工,完善的测试用例在开发初期是会增加一些投入,但是能够有效减少后续测试、维护时候的成本。所以还是很值得投入的,希望能够养成写测试用例的习惯。