站長資訊網
        最全最豐富的資訊網站

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

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

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

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

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

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

        安裝

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

        composer require --dev phpunit/phpunit

        安裝之后,在 vendor/bin 目錄下有一個 phpunit 的可執行文件,這個就是 phpunit 本體了。假設我們項目的目錄結構如下:

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

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

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

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

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

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

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

        使用

        好了,假設我們現在進行開發,在 service 目錄中添加了一個 CalculateService 的文件,并且編寫了一個 abs 的函數。

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

        現在我們對 abs 函數進行單元測試,PHPUnit 規定了一個測試類必須遵守如下的規定:

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

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

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

        根據上面的規范,編寫單元測試代碼

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

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

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

        發現在控制臺會輸出如下內容

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

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

        現在 PHPUnit 基本的單元測試已經運行成功了,在 PHPUnit 的文檔中,有

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国产福利在线观看精品| 香港aa三级久久三级老师2021国产三级精品三级在 | 无码国产精品一区二区免费vr | 伊人久久综合精品无码AV专区| 青青青青久久精品国产| 中文精品人人永久免费| 国产精品美女久久久免费| 97精品国产手机| 无码精品久久久天天影视| 精品国产一区二区三区在线观看| 国产精品久久久久久久| 久久亚洲精品成人av无码网站| 国产剧情国产精品一区| 亚洲?V乱码久久精品蜜桃| 国产精品福利电影一区二区三区四区欧美白嫩精品| 人妻少妇精品视频二区| 精品久久久久久久久中文字幕| 亚洲AV乱码久久精品蜜桃| 精品国产午夜肉伦伦影院| 91亚洲国产成人久久精品| 国内精品91最新在线观看| 国产精品综合色区在线观看| 久久久无码精品亚洲日韩按摩| 在线观看国产精品普通话对白精品| 另类国产精品一区二区| 国产精品人人做人人爽人人添| 午夜精品在线观看| 精品视频在线v| 国产精品亚洲精品| 久久国产精品久久| 国产精品一区二区久久精品| 成人国产精品一区二区网站| 2020国产精品| 国产精品成人观看视频免费| 国产AV国片精品有毛| 3D动漫精品一区二区三区| 97久久超碰国产精品旧版| 55夜色66夜色国产精品视频| 国内精品手机在线观看视频| 五月花精品视频在线观看| 99久久国产综合精品网成人影院|