站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        聊一聊PHP中單元測試工具PHPUnit的用法

        單元測試是指對軟件中的最小可測試單元進行檢查和驗證。本篇文章帶大家了解一下php如何實現(xiàn)單元測試,介紹一下安裝單元測試工具PHPUnit并使用的方法。

        聊一聊PHP中單元測試工具PHPUnit的用法

        朋友,你聽說過安。。。不是,寫過單元測試嗎。

        單元測試是開發(fā)過程中必不可少的一環(huán),一個項目有良好的單元測試代碼,重構(gòu)的勇氣都大很多。這次寫一篇小文來介紹一下 PHP 的單元測試工具 PHPUnit 的使用。

        PHPUnit 的使用并不難,這篇文章主要還是充當一個引子,介紹基本概念和使用,有了這篇文章的基礎(chǔ)之后,去看官網(wǎng)的文檔就會更加順風順水。

        安裝

        安裝 PHPUnit 的方式很簡單,使用 composer 可以一行代碼就可以安裝。

        composer require --dev phpunit/phpunit

        安裝之后,在 vendor/bin 目錄下有一個 phpunit 的可執(zhí)行文件,這個就是 phpunit 本體了。假設(shè)我們項目的目錄結(jié)構(gòu)如下:

        ?  phpunit tree .  ├── controller ├── model ├── service ├── test └── vendor ├── composer.json

        其中我們的單元測試代碼都放在 test 目錄下。使用 composer 來為我們解決 autoload 的問題。

        {   "autoload": {     "psr-4": {       "Controller\": "controller/",       "Model\": "model/",       "Service\": "service/",       "Test\": "test/",     }   }, }

        如果你還不懂 composer 自動加載的使用,可以參考這篇文章。最后執(zhí)行 composer dumpautoload -o 讓自動加載生效。

        到這里我們的安裝就算結(jié)束了。如果你使用 phpstorm 進行開發(fā),那么你需要進行如下的配置:

        聊一聊PHP中單元測試工具PHPUnit的用法

        這里指明了從哪里加載 PHPUnit,由于我們使用 composer 安裝,所以,這里的文件選擇 composer 生成的 autoload.php 文件即可。

        使用

        好了,假設(shè)我們現(xiàn)在進行開發(fā),在 service 目錄中添加了一個 CalculateService 的文件,并且編寫了一個 abs 的函數(shù)。

        namespace Service;  class CalculateService {     public function abs($num)     {         return abs($num);     } }

        現(xiàn)在我們對 abs 函數(shù)進行單元測試,PHPUnit 規(guī)定了一個測試類必須遵守如下的規(guī)定:

        • 單元測試類名必須以 Test 結(jié)尾,必須繼承 PHPUnitFrameworkTestCase 基類。
        • 每個測試函數(shù)必須以 test 開頭。

        上面的規(guī)定是必須遵守的,如果代碼沒有遵守規(guī)定 PHPUnit 不會把他當做單元測試代碼。除了以上的兩條,還有一些良好的編碼習慣可以參考:

        • 單元測試代碼都放在 test 目錄下。
        • 每個單元測試類以被測試的類名開頭。例如被測試類為 CalculateService,那么單元測試類應該為 CalculateServiceTest。
        • 每個單元測試函數(shù)應該為被測試函數(shù)名結(jié)尾。例如被測試函數(shù)為 abs,那么單元測試函數(shù)應該為 testAbs。

        根據(jù)上面的規(guī)范,編寫單元測試代碼

        class UserServiceTest extends PHPUnitFrameworkTestCase {     public function testAbs()     {         $userService = new ServiceCalculateService();         $this->assertEquals(4, $userService->abs(4));     } }

        在上面的測試代碼中,調(diào)用了我們要測試的函數(shù) abs,然后斷言 $userService->abs(4) 的結(jié)果為 4。在 phpstorm 中直接在 testAbs 函數(shù)處右鍵選擇 run UserServiceTest 執(zhí)行:

        聊一聊PHP中單元測試工具PHPUnit的用法

        發(fā)現(xiàn)在控制臺會輸出如下內(nèi)容

        Time: 17 ms, Memory: 4.00MB  OK (1 test, 1 assertion)

        表明 abs 通過了 $userService->abs(4) == 4 的測試用例。這里注意一點,這里并不表明 abs 函數(shù)已經(jīng)通過測試,一個良好的測試應該包含多個測試用例來覆蓋盡可能多的可能性。

        現(xiàn)在 PHPUnit 基本的單元測試已經(jīng)運行成功了,在 PHPUnit 的文檔中,有

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 国产美女精品一区二区三区| 欧美日韩精品乱国产538| 国产精品视频永久免费播放| 黑人巨大精品欧美一区二区| 精品国产乱码一区二区三区| 日韩精品无码久久一区二区三| 在线精品国产一区二区| 国产精品视频第一区二区三区| 午夜精品久久影院蜜桃| 国产精品1024视频| 精品综合久久久久久97超人| 久久久久无码精品国产| 四虎亚洲国产成人久久精品| 国产精品你懂的在线播放| 华人在线精品免费观看| 99在线精品免费视频九九视| 人妻少妇精品中文字幕AV| 亚洲精品麻豆av| 人妻VA精品VA欧美VA| 精品少妇一区二区三区在线| 国产精品毛片a∨一区二区三区| 亚洲欧美日韩精品久久| 国产成人精品福利网站在线| 国精品无码一区二区三区左线| 欧洲精品久久久av无码电影| 亚洲国产精品国自产拍AV | 国产精品免费AV片在线观看| 亚洲国产精品狼友中文久久久| 四虎影视永久在线精品免费| 久久久久久久久久久免费精品| 精品露脸国产偷人在视频| 国产偷伦精品视频| 黑巨人与欧美精品一区| 久久精品国产亚洲Aⅴ蜜臀色欲| 国内精品免费久久影院| 精品久久久久久无码人妻蜜桃 | 99在线精品视频在线观看| 999久久久无码国产精品| 国产精品特级毛片一区二区三区| 精品无码人妻夜人多侵犯18| 国产在线精品免费aaa片|