在寫程式的過程中,最讓人頭痛的就是當功能越來越複雜,修改某一塊程式碼時,突然發現別的地方出問題了。怎麼樣才能又快又好地確保程式碼沒毛病?這時候,測試就成了我們的好幫手。
很多人以為測試只是驗證程式碼的功能對不對,但其實它的作用比這更大。測試不僅可以幫我們找到問題,還可以讓程式碼變得更清晰、更好維護,甚至在未來功能變更時幫我們省下不少麻煩。
每種類型的測試都有不同的測試目的和覆蓋範圍,可以從不同的角度來確保軟體的品質,而PHPUnit 支持多種不同的測試類型,包括單元測試、功能測試和功能測試…等。這裡主要會講到的兩大項為Unit Test
跟Feature Test
。
Service
\ Repository
。Controller
\ Validation
。Service
屬於 Unit Test 的原因Service
的方法是否能按照業務需求正確執行。Service
本身的邏輯。Service
進行細粒度測試。Controller
是否正確調用 Service
。這樣可以確保程式的不同層級都被充分測試,既有精細的單元測試,也有高層的整合測試。
使用 vendor/bin/phpunit
執行測試:
當你執行 vendor/bin/phpunit
,你實際上是在執行專案本地的 PHPUnit,這個版本是根據 composer.json
安裝的特定版本。
因為可能同時開發不同版本的專案,每個專案裡面的phpunit版本不一定一樣,所以進入docker容器,在下指令會比較不會出錯。
--filter {functionName} -> 只執行某一個測試
vendor/bin/phpunit Tests/Feature/Controllers/ExamControllerTest.php --filter testRegisterUsersSuccess
Tests/Unit/Services/ExamServiceTest.php
--filter testSyncMercerAssessmentUpdatesDatabase
\
),但由於反斜線在 CLI 中具有特殊含義(例如轉義),需要加倍反斜線來正確解析路徑。/
測試不僅能幫助我們檢查程式是否正確運作,還能促進程式碼的結構化與可維護性。在應用程式開發中,結合 Unit Test 和 Feature Test 可以確保程式邏輯細節與整體功能流都能無誤運行。
下一篇文章將進一步深入實際測試的應用範例,尤其是如何使用 Laravel 的 Factory 來建立測試資料,並搭配具體測試案例來演示 PHPUnit 測試的執行過程。我們將從測試資料的建立到完整測試的執行步驟,帶領大家實際操作,體驗單元測試與功能測試如何在開發流程中發揮威力。