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

聊一聊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號
在线播放偷拍一区精品| 日本一区二区三区精品中文字幕| 国产麻豆剧果冻传媒免精品费网站 | 亚洲欧美日韩综合俺去了| MM1313亚洲精品无码久久| 91麻豆精品国产91久久久久久| 久久香蕉精品视频| 少妇人妻偷人精品一区二区| 亚洲精品综合久久| 91探花福利精品国产自产在线| 亚洲日韩看片无码电影| 国产精品无码一区二区三区免费| 久久精品免费全国观看国产| 亚洲精品视频在线观看视频| 无码精品人妻一区二区三区中| 国产精品无码午夜福利| 99久久精品国产免看国产一区| 国产精品一香蕉国产线看观看| 日韩视频中文字幕精品偷拍| 日韩视频中文字幕| 日韩最新视频一区二区三| 日韩精品亚洲aⅴ在线影院| 国产精品久久久久久久伊一| 精品72久久久久久久中文字幕| 四虎国产精品永久在线无码| 国产精品第一区揄拍| 久久91精品国产91久| 2020国产欧洲精品视频| 国产精品夜色一区二区三区| 久久精品国产男包| 精品国产V无码大片在线看| 亚洲欧洲精品在线| 精品高潮呻吟99av无码视频| 亚洲国产精品久久网午夜| 91情国产l精品国产亚洲区| 51精品视频免费国产专区| 亚洲精品福利在线观看| 久久精品人妻中文系列| 国产精品视频a播放| 无码人妻精品一区二区三区99性 | 久久99国产乱子伦精品免费|