2018/05/31

由網頁觸發、執行 PHPUnit

通常都是在 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 PHPUnit\TextUI\Command;

$cmd = new Command();

$cmd->run([
    'phpunit',  // 1st arg
    'Test.php', // 2nd arg
]);

如果執行上面這段 PHP script,會得到與在 console 執行 PHPUnit 一樣的結果。
不過要注意的是測試結果會直接輸出到 std out,若另外處理的話,記得用 output buffer 把資料拉回來,直接在瀏覽器看的話會破版。

備註:PHPUnit 不同版本的路徑不同,類別名稱也會不同。

沒有留言:

張貼留言