【Salesforce 認定Platformデベロッパー】試験対策:第150問

問題

Apex テストクラスで @testSetup アノテーションを使用することについて、正しい記述はどれですか。3つ選びなさい。

  • isTest(SeeAllData=True) アノテーションが使用されている場合、@testSetup アノテーションは使用できません。
  • テストデータは、クラス内のすべてのテストメソッドに対して 1 回挿入されます。
  • testSetup メソッドで作成されたレコードを、個々のテストメソッドで更新することはできません。
  • テストクラスの各テストメソッドが実行される前に、@testSetup メソッドが自動的に実行されます。

正解

  • isTest(SeeAllData=True) アノテーションが使用されている場合、@testSetup アノテーションは使用できません。
  • テストデータは、クラス内のすべてのテストメソッドに対して 1 回挿入されます。
  • testSetup メソッドで作成されたレコードを、個々のテストメソッドで更新することはできません。
  • テストクラスの各テストメソッドが実行される前に、@testSetup メソッドが自動的に実行されます。

解説

@testSetup アノテーションを使うことで、テストクラスの全てのテストメソッドに共通のテストデータを一度だけ設定することができます。これによりテストの実行時間を短縮し、リソースの効率的な使用が可能になります。テスト実行後、各メソッドで行われたデータの変更はロールバックされるため、各テストメソッドは互いに影響せず、常にクリーンな状態でテストを開始できます。

  • 注意点:
    • @testSetup メソッドはテストクラスに1つだけ定義できます。
    • テストメソッドで @IsTest(SeeAllData=true) アノテーションが使われている場合、@testSetup メソッドは使用できません。
    • @testSetup メソッド内で発生した致命的なエラーはテストクラス全体を失敗させます。
    • テスト設定メソッドは、引数を取らず、値を返さない静的メソッドとして定義します。

参考:TestSetup アノテーションテスト設定メソッドの使用

それぞれの選択肢の理由について説明します。

□ isTest(SeeAllData=True) アノテーションが使用されている場合、@testSetup アノテーションは使用できません。
これは正解です。isTest(SeeAllData=True) を使用すると、実際の組織データにアクセスすることになりますが、@testSetup はテスト実行の際に独自のテストデータを設定するために使用されるため、両者は同時には使用できません。

□ テストデータは、クラス内のすべてのテストメソッドに対して 1 回挿入されます。
これは正解です。@testSetup で定義されたメソッドは、テストクラス内の各テストメソッドが実行される前に一度だけ実行され、生成されたテストデータは各テストメソッドで使用されます。

□ testSetup メソッドで作成されたレコードを、個々のテストメソッドで更新することはできません。
これは不正解です。@testSetup メソッドで作成されたレコードは、各テストメソッド内で更新することができます。ただし、各テストメソッドは独立しているため、あるテストメソッドでの変更は他のテストメソッドには影響しません。

□ テストクラスの各テストメソッドが実行される前に、@testSetup メソッドが自動的に実行されます。
これは正解です。これは@testSetup アノテーションの基本的な動作であり、このメソッドは各テストメソッドが実行される前に自動的に一度だけ実行されます。これにより、すべてのテストメソッドに対して共通のテストデータを準備することができます。

次の問題へ

前の問題へ

1問目から復習する

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

雇われのシステムエンジニアです。
普段は車載ECUのセキュリティー分野に従事しております。

■保有資格
Salesforce 認定 アドミニストレーター
Salesforce 認定 Platform アプリケーションビルダー
Salesforce 認定 Platform デベロッパー

コメント

コメントする

目次