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