Too many SOQL queries: 101 in Test Class


(by ChatGPT)

在 Salesforce 的測試框架中,@testSetup 方法創建的測試數據和每個測試方法之間是共享的,因此在所有測試方法和 @testSetup 方法中執行的 SOQL 查詢都計入了同一個限制。

因此,如果在 @testSetup 方法中執行了太多的 SOQL 查詢,就有可能導致在後續測試方法中觸發「Too many SOQL queries: 101」的錯誤。

為了避免這種情況發生,可以考慮使用以下方法:

  1. 減少 @testSetup 方法中的 SOQL 查詢次數:在創建測試數據時,盡量使用靜態資料或者透過 DML 操作一次性創建多條測試數據,這樣可以減少 SOQL 查詢的次數。
  2. 使用 Test.loadData() 方法:Test.loadData() 方法可以將測試數據以 CSV 或 XML 格式批量加載到測試環境中,這樣可以減少 SOQL 查詢的次數。
  3. 使用 Test.startTest() 和 Test.stopTest() 方法:在每個測試方法中使用 Test.startTest() 和 Test.stopTest() 方法,這樣可以重置每個測試方法的 SOQL 查詢限制,並且可以確保所有的非同步操作都完成後再進行測試。


總之,@testSetup 方法是一個用來在測試之前創建測試數據的方法,可以減少測試代碼的重複性,但同時也需要注意 @testSetup 方法中的 SOQL 查詢次數限制,並且採取相應的措施來避免觸發「Too many SOQL queries: 101」錯誤。 

留言

這個網誌中的熱門文章

ISC2 CC (Certified in Cybersecurity Certification) 考試心得

Salesforce證照考試心得 (Administrator and Advanced Administrator)