スケジュール実行するApexのテストメソッドと実行時刻の詳細設定
今回は前回の続きで、スケジュール実行するApexのテストメソッドの書き方と実行時刻の詳細設定方法のお話。
スケジュール実行するApexのテストは、
・Test.startTestメソッド
・System.scheduleメソッド
・Test.stopTestメソッド
の順に呼び出すことで、実施します。
System.scheduleメソッドは、Apexをスケジュール設定するメソッドで、
・第1引数:ジョブ名(任意の名前)
・第2引数:クーロン式(実行時刻を設定)
・第3引数:Apexクラスのインスタンス
を受け取り、ジョブIDを返します。
クーロン式は、'0 0 0 3 9 ? 2022'のような式で、左から順に秒、分、時、日、月、曜日、年を表しています(年は省略可)。
<クーロン式の例 ・・・ 詳しい説明は こちら>
・'0 0 13 * * ?':毎日13時に実行
・'0 0 10 ? * MON-FRI':月~金の10時に実行
テスト時に、System.scheduleメソッドで設定した実行時刻になるのを待つ必要はありません。Test.stopTestメソッドをコールすることで、System.scheduleメソッドで設定したジョブが実行され、ジョブの処理結果を確認することができるようになっています。
ソースコードはこんな感じ↓
// テストメソッド static testMethod void hogeClassTest() { // テストデータ準備 // テスト開始 Test.startTest(); // Apexをスケジュールに登録 String jobId = System.schedule('TestScheduledApex', '0 0 * * * ?', new HogeClass()); // テスト終了(登録したスケジュールが実施される) Test.stopTest(); // テストデータの確認 }
前回、『画面からの設定だと、「1日に1回しかスケジューリングできない」「1時間単位でしかスケジューリングできない」』と書きましたが、System.scheduleメソッドを利用すれば、1日に複数回実行することや、分単位で実行することも可能となるので、細かく設定したいときはこちらが便利です。
コメント