generating-apex-test

generating-apex-test

熱門

使用 TestDataFactory 模式、大量測試(251 筆以上)、模擬策略、斷言最佳實務與嚴謹的測試修正循環,來產生並驗證 Apex 測試類別。當您需要建立新的 Apex 測試類別、提升測試覆蓋率、除錯並修復失敗的 Apex 測試、執行測試與覆蓋率分析,或為觸發器、服務、控制器、批次作業、佇列作業與整合實作測試模式時,請使用此技能。觸發條件為 *Test.cls、*_Test.cls 檔案、sf apex run test 工作流程、覆蓋率報告、測試修正循環。請勿對正式環境的 Apex 程式碼(請使用 generating-apex)或 Jest/LWC 測試觸發。

766星標
280分支
更新於 2026/7/24
SKILL.md
唯讀
名稱
generating-apex-test
描述

使用 TestDataFactory 模式、大量測試(251 筆以上)、模擬策略、斷言最佳實務與嚴謹的測試修正循環,來產生並驗證 Apex 測試類別。當您需要建立新的 Apex 測試類別、提升測試覆蓋率、除錯並修復失敗的 Apex 測試、執行測試與覆蓋率分析,或為觸發器、服務、控制器、批次作業、佇列作業與整合實作測試模式時,請使用此技能。觸發條件為 *Test.cls、*_Test.cls 檔案、sf apex run test 工作流程、覆蓋率報告、測試修正循環。請勿對正式環境的 Apex 程式碼(請使用 generating-apex)或 Jest/LWC 測試觸發。

產生 Apex 測試

產生可直接上線的 Apex 測試類別,並透過覆蓋率分析執行嚴謹的測試修正循環。

核心原則

  • 每個方法測試一個行為 — 每個測試方法驗證單一情境。將正向、負向與大量測試分開。絕對不要將相關但不同的輸入(例如 null 與空值)合併在一個方法中 — 應分別建立 _NullInput__EmptyInput_ 作為獨立的測試方法

  • 大量化測試 — 使用 251 筆以上的記錄進行測試,以跨越 200 筆記錄的觸發批次邊界。批次 Apex 例外: 在測試環境中只會執行一次 execute() 呼叫,因此請設定 batchSize >= testRecordCount。請參閱 references/async-testing.md

  • 隔離測試資料 — 每個 @TestSetup 必須將記錄建立委派給 TestDataFactory 類別。如果不存在,請先建立一個。絕對不要在 @TestSetup 中內嵌建立記錄清單。絕對不要依賴組織資料(SeeAllData=false)或寫死的 ID。關於重複規則處理,請參閱 references/test-data-factory.md

  • 有意義的斷言 — 使用從測試資料設定中計算出的確切預期值。當數值可確定時,絕對不要使用範圍斷言或近似計數。務必包含失敗訊息。請參閱 references/assertion-patterns.md

  • 僅使用 Assert 類別 — 使用 Assert.areEqualAssert.isTrueAssert.fail 等。絕對不要使用舊版的 System.assertSystem.assertEqualsSystem.assertNotEquals

  • 模擬外部邊界 — 對呼叫使用 HttpCalloutMock,對 SOSL 使用 Test.setFixedSearchResults,對資料庫隔離使用 DML 模擬類別。透過建構子注入設計可測試性。請參閱 references/mocking-patterns.md

  • 測試負向路徑 — 驗證錯誤處理與例外情境,而不僅是快樂路徑

  • 使用 start/stop 包覆 — 配對 Test.startTest()Test.stopTest() 以重置控管限制並強制非同步執行

Test.startTest() / Test.stopTest()

務必將受測程式碼包覆在 Test.startTest() / Test.stopTest() 中: