W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
100% 的測(cè)試覆蓋率,需要花費(fèi)在測(cè)試代碼上的工時(shí),絲毫不亞于業(yè)務(wù)代碼的開發(fā)時(shí)間。
如開發(fā) Deadline 不允許,做不到 100% 測(cè)試覆蓋率,應(yīng)該考慮對(duì)程序入口進(jìn)行測(cè)試。這種方式的時(shí)間利用比最高。
Laravel 項(xiàng)目中程序入口,一般有以下四種:
對(duì)這些入口進(jìn)行 100% 的測(cè)試覆蓋,可以很大范圍內(nèi)測(cè)試到項(xiàng)目代碼。
編寫測(cè)試時(shí),必須永遠(yuǎn)把執(zhí)行速度放在首位。
所有的單元測(cè)試,都必須放置于 tests/Unit
目錄下。且必須使用子目錄存儲(chǔ),絕不直接放置于此目錄下。
所有的集成測(cè)試,都必須放置于 tests/Feature
目錄下。且必須使用子目錄存儲(chǔ),絕不直接放置于此目錄下。
常見的子目錄按照入口,應(yīng)該劃分如下:
├── API
├── Web
├── Admin
├── Command
└── Job
測(cè)試中使用到樣例數(shù)據(jù),必須放置于 tests/Fixtures
目錄中。且必須使用子目錄存儲(chǔ),絕不直接放置于此目錄下。
測(cè)試代碼必須在開發(fā)同事的機(jī)器上能運(yùn)行,測(cè)試必須在 Beta 環(huán)境下能運(yùn)行。
所有的測(cè)試,都 必須 支持并發(fā)測(cè)試,這樣可以極大節(jié)省 CI 中測(cè)試運(yùn)行的時(shí)間,提高整個(gè)工作流的速度。
每次提交代碼前,使用以下命令跑一下不報(bào)錯(cuò)即可:
php artisan test -p
支持并發(fā)測(cè)試:
composer require brianium/paratest
寫 Feature Test 的時(shí)候,必須使用用例測(cè)試(User Story),而不是代碼測(cè)試。
?代碼測(cè)試的例子:
// tests/Feature/API/V1/UserAddressControllerTest.php
class UserAddressControllerTest extends APITest
{
public function test_controller_index_method()
{
}
public function test_controller_create_method()
{
}
}
? 用例測(cè)試:
// tests/Feature/API/V1/UserAddressControllerTest.php
class UserAddressControllerTest extends APITest
{
public function test_user_can_view_user_address_index()
{
}
public function test_guest_can_not_create_user_address()
{
}
public function test_user_can_create_user_address()
{
}
}
程序中經(jīng)常會(huì)使用第三方服務(wù),例如發(fā)送郵件使用 SendCloud 的 API 、或發(fā)送短信 API。
將這些服務(wù) API 調(diào)用封裝到 Service 層,編寫測(cè)試代碼時(shí),對(duì)其進(jìn)行 Mock 。
建議:檢測(cè)測(cè)試代碼是否使用第三方服務(wù),最好的方法就是把 Wifi 關(guān)掉,然后跑一遍測(cè)試。如果有錯(cuò)誤發(fā)生,證明調(diào)用了第三方 API。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: