Medium 清新閱讀版
:連結
今天讓我們來看 phpunit.xml 吧!
phpunit.xml 位在 Laravel 專案根目錄底下,顧名思義,它是一個設定 PHPUnit 執行方式的設定XML檔,PHPUnit 提供了不少設定值可供設定,這邊只提最重要的幾個:
stopOnFailure
說明:當此欄位設定為 true
時,將會在遇到第1個測試案例測試失敗時,停止後續測試程式碼的執行。
範例:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd"
stopOnFailure="true"
>
<!-- 下略 -->
</phpunit>
stopOnError
說明:當此欄位設定為 true
時,將會在遇到第1個測試案例測試錯誤時,停止後續測試程式碼的執行。特別注意的是,Error 與前 Failure 不同,Error 程式碼語法有錯誤,Failure 是未通過測試驗證。
範例:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd"
stopOnError="true"
>
<!-- 下略 -->
</phpunit>
bootstrap:
說明:當此欄位有設定時,PHPUnit 將會執行該欄位所指定路徑之 PHP 程式碼,建議保留預設值即可。
範例:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd"
bootstrap="vendor/autoload.php"
>
<!-- 下略 -->
</phpunit>
colors:
說明:當此欄位設定為 true
時,執行PHPUnit時將於終端機上輸出含色彩之文字,建議保留預設值即可。
範例:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd"
colors="true"
>
<!-- 下略 -->
</phpunit>
<testsuites>
<testsuite>
<directory>
說明:這個標籤可以設定要執行哪些指定資料夾下的測試程式碼。
範例:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit>
<testsuites>
<testsuite name="Unit">
<directory suffix="Test.php">./tests/Unit</directory>
</testsuite>
<testsuite name="Feature">
<directory suffix="Test.php">./tests/Feature</directory>
</testsuite>
</testsuites>
<!-- 下略 -->
</phpunit>
<coverage>
<include>
說明:這個標籤可以設定,執行覆蓋率計算時,指定涵蓋的資料夾。
範例:
<coverage processUncoveredFiles="true">
<include>
<directory suffix=".php">./app</directory>
</include>
</coverage>
<exclude>
說明:這個標籤可以設定,執行覆蓋率計算時,指定排除的資料夾。
範例:
<coverage processUncoveredFiles="true">
<exclude>
<directory suffix=".php">./app/services</directory>
</exclude>
</coverage>
<php>
<env>
說明:這個標籤可以設定執行測試時的 env 值,當這邊沒設定時,會使用 .env
的設定值,通常會設定以下幾個 env 值:
APP_ENV
DB_CONNECTION
DB_DATABASE
CACHE_DRIVER
QUEUE_CONNECTION
SESSION_DRIVER
範例:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit>
<!-- 上略 -->
<php>
<env name="APP_ENV" value="testing"/>
<env name="BCRYPT_ROUNDS" value="4"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="DB_CONNECTION" value="sqlite"/>
<env name="DB_DATABASE" value=":memory:"/>
<env name="MAIL_MAILER" value="array"/>
<env name="QUEUE_CONNECTION" value="sync"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="TELESCOPE_ENABLED" value="false"/>
</php>
</phpunit>
以上就是今天的介紹囉!
明天我們來看看測試覆蓋率吧。