PHPUnit9.0 有風(fēng)險(xiǎn)的測試

2022-03-22 13:49 更新

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

無用測試

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

意外的代碼覆蓋

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

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

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

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

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

需要啟用運(yùn)行時(shí)間限制的測試必須顯式地標(biāo)注為 ?@small?、?@medium? 或 ?@large?

全局狀態(tài)篡改

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


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)