久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

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

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

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

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

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

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

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

      安裝

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

      composer require --dev phpunit/phpunit

      安裝之后,在 vendor/bin 目錄下有一個 phpunit 的可執(zhí)行文件,這個就是 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 自動加載的使用,可以參考這篇文章。最后執(zhí)行 composer dumpautoload -o 讓自動加載生效。

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

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

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

      使用

      好了,假設我們現(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 結尾,必須繼承 PHPUnitFrameworkTestCase 基類。
      • 每個測試函數(shù)必須以 test 開頭。

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

      • 單元測試代碼都放在 test 目錄下。
      • 每個單元測試類以被測試的類名開頭。例如被測試類為 CalculateService,那么單元測試類應該為 CalculateServiceTest
      • 每個單元測試函數(shù)應該為被測試函數(shù)名結尾。例如被測試函數(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) 的結果為 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號