iT邦幫忙

2022 iThome 鐵人賽

DAY 22
0

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>
        

以上就是今天的介紹囉!

明天我們來看看測試覆蓋率吧。

參考資料


上一篇
Mocking(六):Storage & HTTP
下一篇
Coverage:覆蓋率報告
系列文
自動化測試大作戰31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言