Spring'15から@testSetupアノテーションが新しく使用できるようになります。これを利用するとテストクラス内の各テストメソッドで使用できるテストデータを作成することが可能です。これにより処理が効率化されテスト実行時間を短縮することが可能になります。
サンプルコード
ほぼ開発者向けドキュメントに記載されていたサンプルコードと同じですが、こんな感じで使用できます。
実際にやってみた気になったのは次の2つです。
- @testSetupで作成したテストデータを参照する場合はSOQLで取得する必要がある。
- @testSetupで作成したテストデータはクラス変数にセットできない。
2つ目のクラス変数の件は、サンプルコード内の『wkAccountId』を使って検証しました。@testSetup内で宣言した変数も各テストメソッドからは参照できないので注意が必要です。
使用場面について
基本的にマスタなど組織に存在する前提のテストデータを作成するときに使用すると思います。ただ、テストではマスタが存在しないパターンも必要だと思うので、ちょっと使い道が難しいのかなと感じました。
他にどういうときに使えそうか考えてみたところ、カスタム設定に関しては値が登録されている前提で大丈夫だと思うので、テストクラスで必要なカスタム設定の情報を登録するのにすごく便利だと思います。(もしテストケース毎に値を変更するような使い方をするときには、ちょっと向いていないと思います。...各テストメソッド内でUpdateすればいいのかな..)