[PHPUnit]-2 laravel 的 phpunit.xml 文件說明


 


 

通用配置

 

首先來看 phpunit 元素上的屬性,其中很多屬性其實都可以在執行 phpunit 命令時通過命令行參數的形式傳入,但是如果參數太多,且每次傳入參數都是一樣的,顯然配置到 phpunit.xml 中更方便,也更加易於維護,PHPUnit 執行的命令行參數可以在這里查看,或者通過 phpunit --help 在命令行查看:

  • backupGlobals 屬性對應命令行參數里的 --globals-backup,用於在每個測試中備份和恢復 PHP 超全局變量 $GLOBALS,這里設置為 false 表示不做相應的備份和恢復操作。
  • backupStaticAttributes 屬性對應命令行參數里的 static-backup,用於在每個測試中備份和恢復靜態屬性,這里設置為 false 表示不做相應的備份和恢復操作。
  • bootstrap 屬性對應命令行參數里面的 --bootstrap <file>,用於指定測試運行前需要引入的文件,這里配置為 vendor/autoload.php 表示會引入 Composer 自動加載和管理的所有依賴,以便在測試文件中使用。
  • colors 屬性對應命令行參數里的 --colors=<flag>,用於指示在輸出中是否用顏色進行標識。
  • processIsolation 屬性對應命令行參數里的 --process-isolation,用於表示是否在隔離的 PHP 進程中執行測試。
  • stopOnFailure 屬性對應命令行參數里的 --stop-on-failure,用於表示測試出錯或失敗時是否退出腳本執行,配置為 false 表示不退出。

接下來是一些不能通過命令行參數指定的屬性:

  • convertErrorsToExceptions 屬性用於定義是否將 PHP ERROR 級別錯誤轉化為異常,默認會轉化為異常的錯誤類型包括:E_WARNINGE_NOTICEE_USER_ERRORE_USER_WARNINGE_USER_NOTICEE_STRICTE_RECOVERABLE_ERRORE_DEPRECATEDE_USER_DEPRECATED,這里將該屬性設置為 true 表示啟用該功能。
  • convertNoticesToExceptions 屬性用於定義是否將 PHP NOTICE 級別錯誤轉化為異常,設置為 true 表示會將 E_NOTICEE_USER_NOTICEE_STRICT 三種級別錯誤轉化為異常。
  • convertWarningsToExceptions 屬性用於定義是否將 PHP WARNING 級別錯誤轉化為異常,設置為 true 表示會將 E_WARNING 或 E_USER_WARNING 級別錯誤轉化為異常。

當然,這里只包含了 PHPUnit 所支持的 phpunit 配置的一部分屬性,更多配置請參考官方文檔 及 PHPUnit 命令行參數配置

 


 

測試套件

定義在子元素 <testsuites> 中 Laravel 框架這樣通過 <testsuites> 配置多個 <testsuite>,這取決於項目的復雜度或者需求。

Laravel 框架默認通過 <testsuites> 定義了兩個 <testsuite>,分別是用於單元測試的 Unit 和用於功能的測試的 Feature,在它們各自的測試套件中,通過 directory 子元素指定對應測試文件所在的目錄,

並通過 suffix 屬性指定測試文件的文件名后綴,這樣,當運行 phpunit 命令時,PHPUnit 會從指定目錄下匹配指定后綴的測試文件進行測試。

 

 whitelist 

Laravel 框架還通過 <filter> 元素配置了過濾器,在該元素中我們可以通過 whitelist 子元素指定用於配置代碼覆蓋率報告分析所使用的白名單,代碼覆蓋率是代碼測試中一個很重要的概念,我們的測試代碼要盡可能覆蓋到 100% 的業務代碼,這樣的測試才有意義,而 Laravel 應用代碼都位於項目根目錄下的 app 目錄中,並且我們只測試 PHP 代碼,所以在 <whitelist> 中通過 directory 子元素做了相應的配置。

 

 

.....

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM