Loading
Salesforce から送信されるメールは、承認済ドメインからのみとなります続きを読む

エラー: 「テストメソッド内から複数の executeBatch を呼び出すことはできません」

公開日: Sep 11, 2025
説明
※この記事は英語版を翻訳しており、一部機械翻訳を含むため内容は後日更新される可能性があります。最新の内容は英語版を参照してください。表示言語は画面右下の言語名から切り替えられます。

バッチ Apex クラス用のテストクラスで 200 を超えるレコードを処理すると、"System.UnexpectedException: テストメソッド内から複数の executeBatch を呼び出すことはできません" というエラーが表示される場合があります。
解決策
  • テストクラスで渡すレコードが 200 個を超えないようにします。
  • Test.isRunningTest() を使用して、このコンテキストで 2 番目のジョブを開始するコードをバイパスします。つまり、カバレッジを取得して動作をアサートするには、別のテストで 2 番目のバッチジョブをテストする必要があります。その場合、2 番目のジョブが期待するデータベースの状態をテストコードで手動で明示的に再現する必要があります。理想的ではありませんが、これでうまくいきます。

次に示すのは、テスト実行中に 2 番目のバッチジョブが実行されないようにする変更の例です。

public void finish(Database.BatchableContext) {
    if(!Test.isRunningTest)
         Database.executeBatch(new MySecondBatchJob));
}
注意
  • Test.startTest() と Test.stopTest() で executeBatch を囲みます。
  • 常に @SeeAllData=false を使用するようにしてください。
Test.isRunningTest
ナレッジ記事番号

000386014

 
読み込み中
Salesforce Help | Article