thinkphp5.0 是 tp 發(fā)展路線第一個(gè)支持 composer 的。tp 有自己的載入機(jī)制,composer 也有自己的載入機(jī)制。
官方提供了 think-testing 組件可以通過(guò) composer require topthink/think-testing 1.* 安裝,但我對(duì)這個(gè)測(cè)試組件不是很滿意,原因是它每個(gè)測(cè)試都是模擬成 http 請(qǐng)求。這也就意味著對(duì)于一些特定函數(shù),還得封裝到控制器中或者路由,該控制器還得控制它生產(chǎn)環(huán)境不能對(duì)外開放。thinkphp5.0 是 tp 發(fā)展路線第一個(gè)支持 composer 的。tp 有自己的載入機(jī)制,composer 也有自己的載入機(jī)制。
PHPUnit 是一個(gè)用PHP編程語(yǔ)言開發(fā)的開源軟件,是一個(gè)單元測(cè)試框架。PHPUnit由Sebastian Bergmann創(chuàng)建,源于Kent Beck的SUnit,是xUnit家族的框架之一。
單元測(cè)試是對(duì)單獨(dú)的代碼對(duì)象進(jìn)行測(cè)試的過(guò)程,比如對(duì)函數(shù)、類、方法進(jìn)行測(cè)試。單元測(cè)試可以使用任意一段已經(jīng)寫好的測(cè)試代碼,也可以使用一些已經(jīng)存在的測(cè)試框架,比如JUnit、PHPUnit或者Cantata++,單元測(cè)試框架提供了一系列共同、有用的功能來(lái)幫助人們編寫自動(dòng)化的檢測(cè)單元,例如檢查一個(gè)實(shí)際的值是否符合我們期望的值的斷言。單元測(cè)試框架經(jīng)常會(huì)包含每個(gè)測(cè)試的報(bào)告,以及給出你已經(jīng)覆蓋到的代碼覆蓋率。
總之一句話,使用 phpunit 進(jìn)行自動(dòng)測(cè)試,會(huì)使你的代碼更健壯,減少后期維護(hù)的成本,也是一種比較標(biāo)準(zhǔn)的規(guī)范,現(xiàn)如今流行的PHP框架都帶了單元測(cè)試,如Laraval,Symfony,Yii2等,單元測(cè)試已經(jīng)成了標(biāo)配。
另外,單元測(cè)試用例是通過(guò)命令操控測(cè)試腳本的,而不是通過(guò)瀏覽器訪問(wèn)URL的。
項(xiàng)目?jī)?nèi)安裝PHPUnit
使用 composer 方式安裝 PHPUnit 項(xiàng)目根目錄下執(zhí)行下面這段代碼
composer require phpunit/phpunit
自動(dòng)下載適配版本 我下載的時(shí)4.8.36
將 F:\wamp\wamp\www\tp5\vendor\bin 添加加到 PATH 環(huán)境變量中(這樣PHPunit全局生效)
PHPUnit簡(jiǎn)單用法
1、單個(gè)文件測(cè)試
根目錄下創(chuàng)建目錄tests
新建文件 FirstTest.php,編輯如下:
?php
/**
* 1、引入autoload.php文件
* 2、測(cè)試案例
*
*
*/
namespace App\tests;
require_once __DIR__ . '/../vendor/autoload.php';
use PHPUnit\Framework\TestCase;
class FirstTest extends TestCase
{
public function testTure()
{
$stack = [];
$this->assertEquals(0, count($stack));
}
}
代碼解釋:
FirstTest為測(cè)試類FirstTest繼承于 PHPUnit\Framework\TestCase測(cè)試方法testTure(),測(cè)試方法必須為public權(quán)限,一般以test開頭,或者你也可以選擇給其加注釋@test來(lái)表在測(cè)試方法內(nèi),類似于 assertEquals() 這樣的斷言方法用來(lái)對(duì)實(shí)際值與預(yù)期值的匹配做出來(lái)以此判斷方法是否正確
命令行執(zhí)行:
tests目錄下 執(zhí)行 >phpunit FirstTest 命令 測(cè)試文件命名
測(cè)試項(xiàng)目?jī)?nèi)方法
tp5項(xiàng)目下的控制器在 F:\wamp\wamp\www\tp5\application\index\controller 文件夾下 寫一個(gè)簡(jiǎn)單的方法
在tests內(nèi)寫一個(gè)IndexTest.php
?php
namespace App\tests;
require_once __DIR__ . '/../vendor/autoload.php';
use PHPUnit\Framework\TestCase;
use app\index\controller\Index;
class IndexTest extends TestCase
{
public function testSum()
{
$obj = new Index;
$this->assertEquals(6, $obj->index(2,3));
}
}
執(zhí)行后的結(jié)果 成功!
如果我在index.php,和IndexTest.php都故意寫錯(cuò)
返回結(jié)果 會(huì)有錯(cuò)誤位置
其他用法
其他用法請(qǐng)參考官網(wǎng):PHPUnit中國(guó)官網(wǎng)
您可能感興趣的文章:- PHPUnit 單元測(cè)試安裝與使用入門教程
- PHP單元測(cè)試配置與使用方法詳解
- PHPUnit + Laravel單元測(cè)試常用技能
- PHP使用phpunit進(jìn)行單元測(cè)試示例
- 使用PHPUnit進(jìn)行單元測(cè)試并生成代碼覆蓋率報(bào)告的方法
- PHPStorm中如何對(duì)nodejs項(xiàng)目進(jìn)行單元測(cè)試詳解
- PHP單元測(cè)試框架PHPUnit用法詳解
- thinkPHP框架單元測(cè)試庫(kù)tpunit用法示例
- 淺談如何提高PHP代碼質(zhì)量之單元測(cè)試