[SFDC]Apexバッチのテストに失敗するケース

Database.BatchableなApexクラスをテストしたときに以下のようなエラー。

System.UnexpectedException: No more than one executeBatch can be called from within a testmethod. Please make sure the iterable returned from your start method matches the batch size, resulting in one executeBatch invocation.

テスト時にはexecuteメソッドは1度しか呼べません?的な?
つまり、バッチのstartメソッドでdatabase.Querylocatorを返す場合は、レコードは200件?ずつ返るので、テスト用に大量データを生成している場合はexecuteが複数呼ばれることになり、NGだと。
確かに1000件くらいデータ作ってたよ…。これを200件以下にするとテストの実行に成功した。
ちなみにテスト実行時は組織の既存データも利用されるそうなので、テストメソッドの先頭で既存データを吹き飛ばしておくのが吉かと。


コメントを残す