Newer Version Available
Limits、startTest、および stopTest の使用
Limits メソッドは、メソッドのコール数やヒープサイズの残りの量など、特定のガバナの具体的な制限を返します。
各メソッドには 2 つのバージョンがあります。一方のバージョンのメソッドは現在のコンテキストで使用されているリソースの数��返し、もう一方のバージョンは limit という語を使用し、該当するコンテキストに使用できるリソースの合計数を返します。たとえば、getCallouts は現在のコンテキストで処理済みの外部サービスへのコールアウト数を返し、getLimitCallouts は指定されたコンテキストで使用できるコールアウトの合計数を返します。
Limits メソッドのほかに、startTest メソッドと stopTest メソッドを使用して、コードがガバナ制限にどれくらい近づいているかを確認します。
startTest メソッドは、テストコード内のテストが実際に開始するポイントをマークします。各テストメソッドは、このメソッドを 1 回のみコールできます。このメソッドの前のすべてのコードを、変数の初期化、データ構造の入力などのために使用する必要があります。これにより、テストを実行するために必要なすべてを設定できます。startTest へのコールの後および stopTest の前に実行するコードはすべて、新しいガバナ制限セットが割り当てられます。
startTest メソッドはテストのコンテキストを更新せず、コンテキストをテストに追加します。たとえば、クラスが startTest をコールする前に 98 件の SOQL クエリを作成し、startTest 後の最初の有意なステートメントが DML ステートメントである場合、プログラムはさらに 100 件のクエリを作成できます。ただし、stopTest がコールされると、プログラムは元のコンテキストに戻り、100 件の制限に達するまで追加できる SOQL クエリは 2 件だけになります。
stopTest メソッドは、テストコード内のテストが終了するポイントをマークします。このメソッドは startTest メソッドと組み合わせて使用します。各テストメソッドは、このメソッドを 1 回のみコールできます。stopTest メソッドの後に実行するコードはすべて、startTest がコールされる前に有効だった元の制限が割り当てられます。startTest メソッドの後に実行されたすべての非同期コールはシステムによって収集されます。stopTest を実行する場合、すべての非同期プロセスが同期して実行されます。
プロセスと自動起動フロー
レコード変更プロセス (プロセスビルダーで作成) をトリガする Apex テストの場合、stopTest メソッドは条件グループに複数のスケジュールが含まれる場合でも、すべての日付のスケジュール済みアクションを実行します。イベントプロセス (プロセスビルダーで作成) をトリガする Apex テストの場合、イベントを公開し、Test.getEventBus().deliver() メソッドを使用してプロセスを開始します。関連付けられているスケジュール済みアクションを実行するには stopTest メソッドを使用します。
一時停止要素のある自動起動フローをトリガする Apex テストの場合、stopTest メソッドはフローを再開し、残りの要素を実行します。時間ベースの再開イベントを待機している各一時停止要素で、フローはパスに沿ってすべての要素を再開して実行します。プラットフォームイベントを待機しているフローを再開するには、イベントを公開し、Test.getEventBus().deliver() メソッドまたは stopTest メソッドのいずれかを使用します。