tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Spring'16のApexテストの失敗するテスト実行の停止を試してみました

f:id:tyoshikawa1106:20160218111608p:plain

リリースノート

概要

多数の Apex テストを実行すると、予想以上に時間がかかることがあります。実行の終了を待ってから、多くのテストに失敗したことが判明することは望ましくありません。

指定した数のテストに失敗したら新しいテストの実行を停止するように、テスト実行を設定できるようになりました。テストの実行結果を待ち、無駄な時間を費やす必要がなくなりました。

後日組織で問題を修正した後に、テストを再実行することになるわけですから。開発者コンソールと Tooling API の両方で実行するテスト実行で、テストの失敗が許容される回数を設定できます。この機能は、Lightning Experience と Salesforce Classic の両方で使用できます。

利用手順

開発者コンソールのテスト実行画面にSettingボタンが追加されています。
f:id:tyoshikawa1106:20160218112051p:plain


ここでテスト失敗しきい値を入力します。
f:id:tyoshikawa1106:20160218112208p:plain

  • 0 ~ 1,000,000 の整数値に設定できます
  • "1"を入力した場合は、2回目のエラー発生時にテストが終了します。
  • "3"を入力した場合は、4回目のエラー発生時にテストが終了します。
  • 未入力または"-1"を入力した場合は、エラーが発生してもテストが終了しません。


実際にエラーを出してみます。 正常にテスト実行されるクラスにエラーを2つ追加します。
f:id:tyoshikawa1106:20160218113300p:plain


しきい値に"1"を入力します。
f:id:tyoshikawa1106:20160218113405p:plain:w300


これでテストを実行すると、エラーが2つなので強制終了され・・・・ませんでした。
f:id:tyoshikawa1106:20160218113652p:plain


このような書き方の場合はひとつ目のエラー発生時にそのメソッドのテストは終了するため、ふたつ目のエラーにたどり着かないからです。


ということで2つのメソッドでエラーになるよう修正して実行しました。
f:id:tyoshikawa1106:20160218114040p:plain

これでふたつ目のエラーが発生した際にテスト実行が強制終了されることを確認できました。


テスト実行が終了されるのはそのクラスのみとなっています。その他のクラスのテストは継続して実行されるみたいです。
f:id:tyoshikawa1106:20160218114448p:plain

利用時の注意点

大きい値にすると、パフォーマンスが低下する可能性があることに注意してください。失敗が許容される 1,000 件のテストごとに約 3 秒がテスト実行に追加されます。これにはテストの実行にかかる時間は含まれません。


最終チェックとしてテスト実行する際に設定しておくと便利そうです。