Yii2中如何使用CodeCeption

时间:2022-10-04 20:05:44

 

前言:

Yii2是一款非常优秀的php框架,Yii2的官方发行版整合了Codeception测试框架。在使用Yii2框架的项目中,我们可以非常方便地利用Codeception进行单元测试、功能测试和验收测试。现在我们就利用Codeception在Yii2下实现简单的单元测试。

 

在进行单元测试前,需要做一些准备工作。

 

1. 首先确保你的机器安装了Composer,否则请自行安装,这是安装教程

 

2. 打开命令行,并切换目录到项目根目录,分别运行如下命令。

Cmmand代码   Yii2中如何使用CodeCeption
composer require "fxp/composer-asset-plugin:*"  
  
composer require "codeception/codeception=*"  
  
composer require "codeception/specify=*"  
  
composer require "codeception/verify=*"  

  

3.首先创建测试文件,在tests目录下面运行如下命令

..\vendor\bin\codecept generate:test unit \models\ExampleValidation  

结果如下

Yii2中如何使用CodeCeption

 ExampleValidationTest.php源码如下

<?php  
namespace tests\codeception\unit\models;  
  
use Yii;  
use app\models\DepartmentModel;  
use yii\codeception\TestCase;  
  
class ExampleTest extends TestCase  
{  
    use \Codeception\Specify;  
      
    private $_dept;  
  
    /** 
     * @var \UnitTester 
     */  
    protected $tester;  
  
    protected function _before()  
    {  
        $this->_dept = new DepartmentModel();  
    }  
  
    protected function _after()  
    {  
    }  
  
    public function testValidation()  
    {  
        $this->specify('Department validation fail', function() {  
  
            /* 给dept_name赋一个重复的值,然后assertFalse */  
            $this->_dept->dept_name = 'Biology';  
            $this->assertFalse($this->_dept->validate());  
        });  
  
        $this->specify('Department validation pass', function() {  
  
            /* 给dept_name赋一个尚未重复的值,然后assertTrue */  
             $this->_dept->dept_name = 'Math';  
             $this->assertTrue($this->_dept->validate());  
         });  
    }  
  
}  

  

 

<?php

namespace common\tests\unit\models;

class CollectionTest extends \Codeception\Test\Unit
{
    protected $tester;


    protected function _before()
    {

    }

    protected function _after()
    {

    }

    public function testCollection1()
    {
        $this->assertTrue(2 == 2);
    }

    public function testCollection2()
    {
        $this->assertTrue(1 > 2);
    }

}

  

然后在命令行测试结果如下

指定到类

D:\Project\PHP\yii2\common>..\vendor\bin\codecept run unit \models\CollectionTest

 

指定到方法

D:\Project\PHP\yii2\common>..\vendor\bin\codecept run unit \models\CollectionTest:testCollection1

 

Yii2中如何使用CodeCeption

显示有一个错误

 

注,_bootstrap.php 文件记得引入Yii的自动加载

<?php
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'test');
defined('YII_APP_BASE_PATH') or define('YII_APP_BASE_PATH', __DIR__ . '/../../');

require_once(__DIR__ . '/../../vendor/autoload.php');
require_once(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/../config/bootstrap.php');

  

 

参考:

Yii2框架下,使用Codeception进行单元测试:http://tangl163.iteye.com/blog/2288538

Yii2中如何使用CodeCeption:http://hustnaive.github.io/php/2015/06/16/work-with-yii-and-codeception.html

codeception (3)在yii2下创建Unit Tests (单元测试):https://segmentfault.com/a/1190000005926883

https://www.cnblogs.com/zergling9999/p/6052766.html