PHPUnit 入門
走進測試的大門
Contents
PHPUnit 是 PHP編程語言的單元測試框架。
本文從最簡單的範例,說明 PHPUnit 的使用方法
我的電腦環境
OS: macOS 10.15.7
php: 7.3.22
composer: 1.9.2
1. 建立測試專案
-
建立專案資料夾並安裝最新版的 phpunit
1 2take php-tdd-demo composer require phpunit/phpunit這裡我們並不是全域安裝 phpunit,而是在這個專案下可以透過
./vendor/bin/phpunit來執行 phpunit例如執行以下指令查看 phpunit 版本
1./vendor/bin/phpunit --version -
建立 src, tests 資料夾
1mkdir src tests此時我們的資料夾結構就如下:
- 📂 src
我們的來源php程式碼(要被測試的程式)放在這裡
- 📂 tests
測試程式將被放到這裡來
- 📂 vendor
- composer.json
- composer.lock
- 📂 src
-
在 composer.json 加上以下設定:
1 2 3 4 5 6 7 8 9 10"autoload": { "psr-4": { "Src\\": "src/" } }, "autoload-dev": { "psr-4": { "Tests\\": "tests/" } }
2. 建立我的第一支測試程式
-
在
tests/資料夾新增一個檔案CalculatorTest.php1touch tests/CalculatorTest.phpTip所有可被執行的測試程式檔案必須取名為XxxTest.php!(以Test為結尾,大駝峰式命名) -
在
tests/CalculatorTest.php寫入:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20<?php use PHPUnit\Framework\TestCase; use Src\Calculator; class CalculatorTest extends TestCase { public function testAdd() { /** @Arange */ $calculator = new Calculator(); $expected = 2; /** @Act */ $actual = $calculator->add(1, 1); /** @Assert */ $this->assertEquals($expected, $actual); } }Tip- 所有測試程式需要
extends TestCase - 測試函式名稱取為
testXxxx!(以test為開頭,小駝峰式命名)
在 testAdd 函式中,以3A原則撰寫測試:
Arange:準備好要被測試的資料 => $calculator 計算器物件、預期值 2Act:調用受測物件的方法 => 計算器物件傳入兩個1,回傳相加的結果Assert:驗證是否符合預期 => 驗證回傳之結果是否符合預期值 2
- 所有測試程式需要
3. 執行測試
輸入以下指令會執行 tests/ 資料夾底下符合測試命名規則的所有測試
|
|
可以加入 --testdox 來顯示測試名稱、 --colors 使顯示的結果有顯色
|
|
結果:

紅燈!出現了 Class 'Tests\Calculator' not found 的錯誤,因為我們還沒開始寫 Calculator 物件
4. 開始實作 Calculator 與 add 方法
建立 src/Calculator.php 並寫入:
|
|
5. 再次執行測試程式
執行 ./vendor/bin/phpunit tests --testdox --colors
結果:

綠燈!完成!