今天讓我們來看 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>
以上就是今天的介紹囉!
下一篇我們來看看測試覆蓋率吧。
如果您喜歡這篇文章,歡迎加入追蹤以接收新文章通知 😄