問題
開発者は、テストメソッドのガバナ制限をどのように回避すべきでしょうか。
- レコードを作成するメソッドで@TestVisibleを使用する。
- Test.loadData()を使用して、静的リソースからデータをロードする。
- 既存のデータを使用するために、@IsTest(SeeAllData=true)を使用する。
- Test.startTest()を使用して、ガバナ制限をリセットする。
正解
- レコードを作成するメソッドで@TestVisibleを使用する。
- Test.loadData()を使用して、静的リソースからデータをロードする。
- 既存のデータを使用するために、@IsTest(SeeAllData=true)を使用する。
- Test.startTest()を使用して、ガバナ制限をリセットする。
解説
それぞれの選択肢の理由について説明します。
□ レコードを作成するメソッドで@TestVisibleを使用する。
これは不正解です。@TestVisible
アノテーションは、テストクラス内でのみアクセス可能なプライベートメンバーにアクセスするために使用されます。しかし、これはガバナ制限を回避するためのメカニズムではありません。
□ Test.loadData()を使用して、静的リソースからデータをロードする。
これは不正解です。この選択肢は誤解を招く可能性があります。確かにTest.loadData()
メソッドは、静的リソースからテストデータをロードし、DML操作に関連するデータベースのオーバーヘッドを軽減するのに役立ちます。これにより、テストメソッドの実行中のDMLステートメントやSOQLクエリの制限に対する影響を減らすことができ、テストのパフォーマンスが向上します。しかし、この方法はガバナ制限を完全に「回避」する手段ではなく、特にCPU時間などの他の種類のガバナ制限に対しては直接的な解決策にはなりません。
□ 既存のデータを使用するために、@IsTest(SeeAllData=true)を使用する。
これは不正解です。@IsTest(SeeAllData=true)
は、テストクラスが本番環境のデータにアクセスすることを許可しますが、これは一般的には推奨されません。このアプローチはテストの信頼性を低下させ、意図しないデータ変更やガバナ制限の問題を引き起こす可能性があります。
□ Test.startTest()を使用して、ガバナ制限をリセットする。
これは正解です。Test.startTest()
とTest.stopTest()
は、テストメソッド内でガバナ制限をリセットするために使用されます。これにより、テストメソッド内で行われる特定の操作のために新しいガバナ制限のコンテキストを提供し、これらの制限を適切に管理するのに役立ちます。
コメント