
generating-apex-test
熱門使用 TestDataFactory 模式、大量測試(251 筆以上)、模擬策略、斷言最佳實務與嚴謹的測試修正循環,來產生並驗證 Apex 測試類別。當您需要建立新的 Apex 測試類別、提升測試覆蓋率、除錯並修復失敗的 Apex 測試、執行測試與覆蓋率分析,或為觸發器、服務、控制器、批次作業、佇列作業與整合實作測試模式時,請使用此技能。觸發條件為 *Test.cls、*_Test.cls 檔案、sf apex run test 工作流程、覆蓋率報告、測試修正循環。請勿對正式環境的 Apex 程式碼(請使用 generating-apex)或 Jest/LWC 測試觸發。
使用 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.areEqual、Assert.isTrue、Assert.fail等。絕對不要使用舊版的System.assert、System.assertEquals或System.assertNotEquals -
模擬外部邊界 — 對呼叫使用
HttpCalloutMock,對 SOSL 使用Test.setFixedSearchResults,對資料庫隔離使用 DML 模擬類別。透過建構子注入設計可測試性。請參閱 references/mocking-patterns.md -
測試負向路徑 — 驗證錯誤處理與例外情境,而不僅是快樂路徑
-
使用 start/stop 包覆 — 配對
Test.startTest()與Test.stopTest()以重置控管限制並強制非同步執行
Test.startTest() / Test.stopTest()
務必將受測程式碼包覆在 Test.startTest() / Test.stopTest() 中:





