php – phpUnit 快速教學

透過 composer 安裝

composer require phpunit/phpunit

透過 Composer 的 Autoload 指定 psr-4 的自動讀取規範。如修改 composer.json,我指定命名空間 MyLib 對應的根目錄是 src。

"autoload": {
    "psr-4": {
        "MyLib\\": "src"
    }
}

開始建立我們的第一支類別 src/SayHi.php

<?php
namespace MyLib;

class SayHi {
    public function main()
    {
        return "Hi";
    }
}

我們建立一支單元測試檔 test/CaryTest.php。用來測試 SayHi::main() 回傳的時候,是否等於我們預期的值 “Hi”。我們透過 phpUnit 提供的斷言方法 assertEquals()。

<?php
use MyLib\SayHi;
use PHPUnit\Framework\TestCase;

class CaryTest extends TestCase {
    public function testSayHi()
    {
        $sayHi = new SayHi();
        $this->assertEquals($sayHi->main(), "Hi");
    }
}

有更多的斷言方法,可以參考官網。接著 Command-Line 運行測試

Windows:
vendor\bin\phpunit tests\CaryTest.php

Linux: 
vendor/bin/phpunit tests/CaryTest.php

如果有多筆 test 的話,可以運行到資料夾,會一次跑所有的測試

vendor/bin/phpunit tests/CaryTest.php

接著我們能看到執行的結果

大致上懂到這裡就好。

我們可以看到輸出有個「.」的符號,那是有意思的。官方說

  • . 代表測試成功
  • F 測試運行的時候發生斷言失敗
  • E 測試運行的時候發生錯誤
  • R 測試運行的時候被標記有風險
  • S 印出的時候測試被跳過
  • I 印出的時候, 測試被標記未完成或尚未實現

執行測試的時候,也可以使用這種格式化

vendor\bin\phpunit --testdox tests

發表迴響