thinkphp5.0 是 tp 發(fā)展路線第一個支持 composer 的。tp 有自己的載入機(jī)制,composer 也有自己的載入機(jī)制。
官方提供了 think-testing 組件可以通過 composer require topthink/think-testing 1.* 安裝,但我對這個測試組件不是很滿意,原因是它每個測試都是模擬成 http 請求。這也就意味著對于一些特定函數(shù),還得封裝到控制器中或者路由,該控制器還得控制它生產(chǎn)環(huán)境不能對外開放。thinkphp5.0 是 tp 發(fā)展路線第一個支持 composer 的。tp 有自己的載入機(jī)制,composer 也有自己的載入機(jī)制。
PHPUnit 是一個用PHP編程語言開發(fā)的開源軟件,是一個單元測試框架。PHPUnit由Sebastian Bergmann創(chuàng)建,源于Kent Beck的SUnit,是xUnit家族的框架之一。
單元測試是對單獨(dú)的代碼對象進(jìn)行測試的過程,比如對函數(shù)、類、方法進(jìn)行測試。單元測試可以使用任意一段已經(jīng)寫好的測試代碼,也可以使用一些已經(jīng)存在的測試框架,比如JUnit、PHPUnit或者Cantata++,單元測試框架提供了一系列共同、有用的功能來幫助人們編寫自動化的檢測單元,例如檢查一個實際的值是否符合我們期望的值的斷言。單元測試框架經(jīng)常會包含每個測試的報告,以及給出你已經(jīng)覆蓋到的代碼覆蓋率。
總之一句話,使用 phpunit 進(jìn)行自動測試,會使你的代碼更健壯,減少后期維護(hù)的成本,也是一種比較標(biāo)準(zhǔn)的規(guī)范,現(xiàn)如今流行的PHP框架都帶了單元測試,如Laraval,Symfony,Yii2等,單元測試已經(jīng)成了標(biāo)配。
另外,單元測試用例是通過命令操控測試腳本的,而不是通過瀏覽器訪問URL的。
項目內(nèi)安裝PHPUnit
使用 composer 方式安裝 PHPUnit 項目根目錄下執(zhí)行下面這段代碼
composer require phpunit/phpunit
自動下載適配版本 我下載的時4.8.36
將 F:\wamp\wamp\www\tp5\vendor\bin 添加加到 PATH 環(huán)境變量中(這樣PHPunit全局生效)
PHPUnit簡單用法
1、單個文件測試
根目錄下創(chuàng)建目錄tests
新建文件 FirstTest.php,編輯如下:
?php /** * 1、引入autoload.php文件 * 2、測試案例 * * */ 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為測試類FirstTest繼承于 PHPUnit\Framework\TestCase測試方法testTure(),測試方法必須為public權(quán)限,一般以test開頭,或者你也可以選擇給其加注釋@test來表在測試方法內(nèi),類似于 assertEquals() 這樣的斷言方法用來對實際值與預(yù)期值的匹配做出來以此判斷方法是否正確
命令行執(zhí)行:
tests目錄下 執(zhí)行 >phpunit FirstTest 命令 測試文件命名
測試項目內(nèi)方法
tp5項目下的控制器在 F:\wamp\wamp\www\tp5\application\index\controller 文件夾下 寫一個簡單的方法
在tests內(nèi)寫一個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都故意寫錯
返回結(jié)果 會有錯誤位置
其他用法
其他用法請參考官網(wǎng):PHPUnit中國官網(wǎng)
標(biāo)簽:黃南 婁底 宜賓 寶雞 銅川 南陽 鎮(zhèn)江 湛江
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ThinkPHP5與單元測試PHPUnit使用詳解》,本文關(guān)鍵詞 ThinkPHP5,與,單元,測試,PHPUnit,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。