本文小編為大家詳細(xì)介紹“PHPUnit在PHP項(xiàng)目中如何使用”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“PHPUnit在PHP項(xiàng)目中如何使用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。
成都創(chuàng)新互聯(lián)從2013年成立,先為濱江等服務(wù)建站,濱江等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為濱江企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
單元測(cè)試介紹
單元測(cè)試是分別對(duì)程序的單元(方法, 函數(shù))進(jìn)行測(cè)試,判斷執(zhí)行結(jié)果是否符合預(yù)期
單元測(cè)試能協(xié)助開發(fā)者什么?
1.確保單元的執(zhí)行結(jié)果
2.盡早發(fā)現(xiàn)程序中的錯(cuò)誤
3.修改程序, 更加有信心
PHPUnit 是 PHP 程式語言中最常見的單元測(cè)試 (unit testing) 框架,PHPUnit 是參考 xUnit 架構(gòu)利用 PHP 實(shí)作出來。
安裝PHPUnit
# 項(xiàng)目中安裝 $ composer require --dev phpunit/phpunit # 下載到本地 $ wget https://phar.phpunit.de/phpunit-9.phar
使用項(xiàng)目中安裝可以在項(xiàng)目中直接運(yùn)行, 無需太多配置, 將 phar 下載到非項(xiàng)目文件夾, 可以減少項(xiàng)目代碼的體積, 我一般采用下載到本地, 然后多個(gè)項(xiàng)目公用一個(gè) phpunit.phar
, 減少項(xiàng)目體積, 不過需要在 IDE中增加更多配置
配置autoload
添加下面的代碼到composer.json PackageName是項(xiàng)目的名稱,src是包含PHP class文件的文件夾地址,項(xiàng)目根目錄下的子文件夾。
... "autoload": { "psr-4": { "PackageName\\": "src/", "PackageName\\Tests": "tests/" } }, ...
設(shè)置PHPUnit
在phpstorm中 Languages & Frameworks >PHP >Test Frameworks
根據(jù)不同的加載方式設(shè)置不同的配置
如果是項(xiàng)目額外加載, 則需要把 phpunit 所在的文件夾作為 library 加入項(xiàng)目, 便于代碼提示 Preferences | Languages & Frameworks | PHP
, 加入 phpunit 文件夾
編寫PHPUnit測(cè)試
針對(duì)類 Example
的測(cè)試寫在類 ExampleTest
中, ExampleTest
繼承自 TestCase
對(duì)于方法的測(cè)試命名為 test*
的公用方法
在測(cè)試方法內(nèi),類似于 assertEquals()
的斷言方法用來對(duì)實(shí)際值和預(yù)期值的匹配做出驗(yàn)證
ArrayTest 用 PHPUnit 測(cè)試數(shù)組操作
assertCount(0, $stack); $stack[] = 'foo'; $this->assertEquals('foo', $stack[count($stack) - 1]); $this->assertCount(1, $stack); $this->assertEquals('foo', array_pop($stack)); $this->assertCount(0, $stack); } }
在 IDE 中運(yùn)行
點(diǎn)擊方法名稱
右鍵測(cè)試類
右鍵測(cè)試文件夾
PHPUnit 斷言
laravel 中除了標(biāo)準(zhǔn)的 PHPUnit 斷言(assertEquals()
, assertContains()
, assertInstanceOf()
, …更多斷言請(qǐng)看https://phpunit.readthedocs.io/zh_CN/latest/assertions.html?highlight=assertTrue#
)之外, 還存在很多允許測(cè)試 web 應(yīng)用的檢測(cè)項(xiàng)目
assertPageLoaded($uri, $message = null)
檢測(cè)最近的頁面是否被加載, 如果不存在 url / message 時(shí)候會(huì)報(bào)錯(cuò)
assertResponseOk()
是否頁面相應(yīng)OK
assertReponseStatus($code)
是否響應(yīng)指定的code
assertViewHas($key, $value = null)
視圖中是否存在指定的數(shù)據(jù)
assertViewHasAll($bindings)
視圖中是否存在指定的一系列數(shù)據(jù)
assertViewMissing($key)
指定視圖中是否不存在這個(gè)數(shù)據(jù)
assertRedirectedTo($uri, $with = [])
檢測(cè)是否重定向到指定的uri
assertRedirectedToRoute($name, $parameters = [], $with = [])
是否客戶端重定向到指定的路由
assertRedirectedToAction($name, $parameters = [], $with = [])
是否重定向到 action
assertSessionHas($key, $value = null)
session 中是否存在 key/ value
assertSessionHasAll($bindings)
session 中是否存在指定的 kv
assertSessionHasErrors($bindings = [])
session 是否存在錯(cuò)誤
assertHasOldInput()
session 中是否存在以前的數(shù)據(jù)
示例 xml 文件
phpunit.xml at 9.x · laravel
./tests/Unit ./tests/Feature ./app
安裝 xdebug / Phpunit
# 安裝 xdebug $ pecl install xdebug
啟用 xdebug
# php.ini 文件 xdebug.mode = coverage
讀到這里,這篇“PHPUnit在PHP項(xiàng)目中如何使用”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。