通常都是在 console 底下執行 PHPUnit 跑測試:
$ phpunit Test.php
... Run by vendor/bin/phpunit ...
PHPUnit 7.1.5 by Sebastian Bergmann and contributors.
. 1 / 1 (100%)
Time: 30 ms, Memory: 4.00MB
OK (1 test, 1 assertion)
但若開發環境無法使用 console 的話,只能靠寫 PHP script 來 require PHPUnit library 來執行。在這邊發現其實 PHPUnit 有保留 interface 讓使用者可以不透過 console 來操作 PHPUnit,可以在 PHP script 裡面 require library 來使用。
先使用 composer 把 library 拉下來:
composer require 'phpunit/phpunit'
在 PHPUnut/TextUI 底下,有實作幾個 controller 來模擬 console 的操作。以下使用 Command 來執行 PHPUnit:
<?php
require __DIR__ . '/vendor/autoload.php';
use PHPUnitTextUICommand;
$cmd = new Command();
$cmd->run([
'phpunit', // 1st arg
'Test.php', // 2nd arg
]);
如果執行上面這段 PHP script,會得到與在 console 執行 PHPUnit 一樣的結果。
不過要注意的是測試結果會直接輸出到 std out,若另外處理的話,記得用 output buffer 把資料拉回來,直接在瀏覽器看的話會破版。
備註:PHPUnit 不同版本的路徑不同,類別名稱也會不同。