前言:php
Yii2是一款很是優秀的php框架,Yii2的官方發行版整合了Codeception測試框架。在使用Yii2框架的項目中,咱們能夠很是方便地利用Codeception進行單元測試、功能測試和驗收測試。如今咱們就利用Codeception在Yii2下實現簡單的單元測試。html
在進行單元測試前,須要作一些準備工做。git
1. 首先確保你的機器安裝了Composer,不然請自行安裝,這是安裝教程github
2. 打開命令行,並切換目錄到項目根目錄,分別運行以下命令。bootstrap
composer require "fxp/composer-asset-plugin:*" composer require "codeception/codeception=*" composer require "codeception/specify=*" composer require "codeception/verify=*"
3.首先建立測試文件,在tests目錄下面運行以下命令segmentfault
..\vendor\bin\codecept generate:test unit \models\ExampleValidation
結果以下php框架
ExampleValidationTest.php源碼以下yii2
<?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); } }
而後在命令行測試結果以下app
指定到類composer
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
顯示有一個錯誤
注,_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