問題
開発者は、Salesforce の様々な種類のケースを独立した要件でテストできるようにするために、一連のテスト全体の基本データセット (取引先、取引先責任者、商品、納入商品) を作成する必要があります。
各単体テストに必要なデータを効率的に生成できるのはどの方法でしょうか。
- viodメソッドで@TestSetupを使用する
- 単体テストクラスの先頭に@isTest(seeAllData = true)を追加する
- 単体テストのTest.startTest()の前にテストデータを作成する
- スタブAPIを使ってモックを作成する
正解
- viodメソッドで@TestSetupを使用する
- 単体テストクラスの先頭に@isTest(seeAllData = true)を追加する
- 単体テストのTest.startTest()の前にテストデータを作成する
- スタブAPIを使ってモックを作成する
解説
@TestSetup
とは、Salesforceの単体テストで使用される特別なアノテーションです。このアノテーションが付与されたメソッドは、テストクラス内のすべてのテストメソッドの実行前に一度だけ実行されます。このメソッド内で作成されたデータは、その後のすべてのテストメソッドで利用できるため、共通のテストデータを効率的に準備するのに役立ちます。
それぞれの選択肢の理由について説明します。
□ viodメソッドで@TestSetupを使用する
これは正解です。@TestSetup
を使用すると、単体テストの前に一度だけ実行されるセットアップメソッドを作成できます。このメソッド内で作成されたデータは、その後のすべてのテストメソッドで利用できるため、基本データセットを効率的に生成するのに適しています。
□ 単体テストクラスの先頭に@isTest(seeAllData = true)を追加する
これは不正解です。@isTest(seeAllData = true)
は、テストメソッドが実際の組織データにアクセスできるようにするものですが、通常は使用を避けるべきです。テストデータの分離と組織データへの依存を避けるため、テスト内で独自のデータを生成することが推奨されます。
□ 単体テストのTest.startTest()の前にテストデータを作成する
これは不正解です。Test.startTest()
とTest.stopTest()
は、テストのガバナ制限を分離するために使用されますが、テストデータの生成を効率化するためのものではありません。
□ スタブAPIを使ってモックを作成する
これは不正解です。スタブAPIは、外部システムへの呼び出しを模倣するために使用されるもので、テストデータの生成には関係ありません。
コメント