Yii2下使用phpunit进行单元测试

尽管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)

磨刀不误砍柴工,完善的测试用例在开发初期是会增加一些投入,但是能够有效减少后续测试、维护时候的成本。所以还是很值得投入的,希望能够养成写测试用例的习惯。

发表回复