PHPUnit 設定檔

PHPUnit 執行測試時,是有選項可以設定的。我們可以在專案根目錄中建立一個名為 phpunit.xml 的 XML 檔案,把設定寫在裡面,讓 phpunit 執行時有所依據。

如果目前所在的工作目錄下,有 phpunit.xmlphpunit.xml.dist (照此順序找) 的 XML 檔,而且也沒有在 phpunit 指令中加入 --configuration 選項,那麼 phpunit 就會自動從前面的 XML 檔案讀取設定來執行。

依照不同的設定檔執行

當我們有不同環境需要進行不同的測試時,可以利用 phpunit 指令的 -c--configuration 選項來使用不同的設定檔:

C:\project> phpunit -c phpunit.xml.production
C:\project> phpunit --configuration phpunit.xml.develop

通常在 CI (Continuous Integration 持續整合) 伺服器執行整合測試時,就會使用不同的設定來執行。

phpunit.xml 範例

常見的 phpunit.xml 範例如下:

<?xml version="1.0" encoding="UTF-8" ?>
<phpunit
    bootstrap="./bootstrap.php"
    colors="true">
    <testsuites>
        <testsuite name="Cart Test Suite">
            <directory phpVersion="5.3.0" phpVersionOperator=">=">./tests/</directory>
            <file>./vendor/someone/mylib/tests/MyClassTest.php</file>
        </testsuite>
    </testsuites>
</phpunit>

常用設定

以下列出幾個常見的設定:

  • bootstrap

    在執行測試之前,先執行 bootstrap 指定的檔案,其路徑相對於 phpunit.xmlbootstrap 指定的檔案通常會執行自動載入類別、定義測試會用到的常數、設定執行環境等。

  • colors

    phpunit 指令的輸出 ANSI 色彩化;例如測試都成功的時候, OK 的背景會是一條綠色光棒。在 Windows 環境下的命令列不支援 ANSI 色彩,可使用 ANSICONConEmu

  • testsuites

    <testsuites> 可以包含一個或多個 <testsuite> 子標籤,然後將測試案例與測試套件組合成更大的測試套件。

  • testsuite

    testsuite 可以包含一到多個 directoryfile 子標籤,來決定要測試的資料夾或檔案。它們都可以加入 phpVersionphpVersionOperator 屬性,以參考 PHP 版本來決定是不是要執行該資料夾或檔案裡的測試。

其他設定可以參考官方手冊附錄 C 。

官方手冊參考

練習

  • 試著嘗試設定不同的 phpunit.xml 中的選項,