PHPUnit9.0 有風險的測試

2022-03-22 13:49 更新

在執(zhí)行測試時,PHPUnit 可以進行一些額外的檢查,見下文。

無用測試

默認情況下,PHPUnit 會更嚴格地對待事實上不測試任何內(nèi)容的測試。此項檢查可以用命令行選項 ?--dont-report-useless-tests? 或在 PHPUnit 的配置文件中設置 ?beStrictAboutTestsThatDoNotTestAnything="false"? 來禁用。
在啟用本項檢查后,如果某個測試未進行任何斷言,它將被標記為有風險。仿件對象中的預期同樣視為斷言。

意外的代碼覆蓋

PHPUnit 可以更嚴格對待意外的代碼覆蓋。此項檢查可以用命令行選項 ?--strict-coverage? 或在 PHPUnit 的配置文件中設置 ?beStrictAboutCoversAnnotation="true"? 來啟用。
在啟用本項檢查后,如果某個帶有 ?@covers? 標注的測試執(zhí)行了未在 ?@covers? 或 ?@uses? 標注中列出的代碼,它將被標記為有風險。
此外,通過在 PHPUnit 的配置文件中設置 ?forceCoversAnnotation="true"?,可以將沒有 ?@covers? 標注的測試標記為有風險。

測試執(zhí)行期間產(chǎn)生的輸出

PHPUnit 可以更嚴格對待測試執(zhí)行期間產(chǎn)生的輸出。 此項檢查可以用命令行選項 ?--disallow-test-output? 或在 PHPUnit 的配置文件中設置?beStrictAboutOutputDuringTests="true"? 來啟用。
在啟用本項檢查后,如果某個測試產(chǎn)生了輸出,例如,在測試代碼或被測代碼中調(diào)用了 print,它將被標記為有風險。

測試執(zhí)行時長的超時限制

如果安裝了 ?PHP_Invoker? 包并且 ?pcntl ?擴展可用,那么可以對測試的執(zhí)行時長進行限制。此時間限制可以用命令行選項 ?--enforce-time-limit? 或在 PHPUnit 的配置文件中設置 ?enforceTimeLimit="true"? 來啟用。
帶有 ?@large? 標注的測試如果執(zhí)行時間超過 60 秒將視為失敗。此超時限制可以通過配置文件中的 ?timeoutForLargeTests ?屬性進行配置。
帶有 ?@medium? 標注的測試如果執(zhí)行時間超過 10 秒將視為失敗。此超時限制可以通過配置文件中的 ?timeoutForMediumTests ?屬性進行配置。
帶有 ?@small? 標注的測試如果執(zhí)行時間超過 1 秒將視為失敗。此超時限制可以通過配置文件中的 ?timeoutForSmallTests ?屬性進行配置。

需要啟用運行時間限制的測試必須顯式地標注為 ?@small?、?@medium? 或 ?@large?

全局狀態(tài)篡改

PHPUnit 可以更嚴格對待篡改全局狀態(tài)的測試。此項檢查可以用命令行選項 ?--strict-global-state? 或在 PHPUnit 的配置文件中設置 ?beStrictAboutChangesToGlobalState="true"? 來啟用。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號