問題
組織には、取引先関連の機能を提供するさまざまなApexクラスがあります。新しい入力規則がオブジェクトに追加された後、多くのテストメソッドが失敗します。失敗を解決し、将来の入力規則に必要なコード変更の数を減らすために何ができますか。2つ選びなさい。
- 有効な取引先レコードを作成するメソッドを作成し、テストメソッド内からこのメソッドを呼び出します。
- 有効な取引先レコードを静的リソースからロードするメソッドを作成し、テストメソッド内でこのメソッドを呼び出します。
- 有効な取引先レコードのコールアウトを実行するメソッドを作成し、テストメソッド内からこのメソッドを呼び出します。
- 有効な取引先レコードを照会するメソッドを作成し、テストメソッド内からこのメソッドを呼び出します。
正解
- 有効な取引先レコードを作成するメソッドを作成し、テストメソッド内からこのメソッドを呼び出します。
- 有効な取引先レコードを静的リソースからロードするメソッドを作成し、テストメソッド内でこのメソッドを呼び出します。
- 有効な取引先レコードのコールアウトを実行するメソッドを作成し、テストメソッド内からこのメソッドを呼び出します。
- 有効な取引先レコードを照会するメソッドを作成し、テストメソッド内からこのメソッドを呼び出します。
解説
この問題の要点を以下にまとめます。
- 問題の主要な要点を理解:
- 新しい入力規則の追加後に多くのテストが失敗しています。
- この失敗を解決し、将来の入力規則の変更に柔軟に対応したい。
- 選択肢の中で「データ作成」に関するアクションを探す際の3つの重要な考慮点:
- テストデータの独立性: Apexテストは独立して実行されるべきです。これは、実際のデータに依存することなくテストを実行できるようにするためです。新しい入力規則が導入された場合、テストデータの要件が変わる可能性があります。そのため、テストデータを新しく作成するか、静的リソースからロードする方法が効果的です。
- 外部システムとの依存性の排除: Apexテストでは外部システムとの実際のコールアウトを避けるべきです。これはテストの実行速度や外部システムの可用性に影響を受けないようにするためです。テストデータの作成時、この依存性を回避する方法を選択することが重要です。
- 変更への柔軟性: 入力規則や他のビジネスロジックの変更に素早く対応するため、テストデータの作成や取得方法を一元化す
それぞれの選択肢の理由について説明します。
□ 有効な取引先レコードを作成するメソッドを作成し、テストメソッド内からこのメソッドを呼び出します。
これは正解です。入力規則が変更されると、テストデータの作成方法も変わる可能性があります。しかし、すべてのテストメソッドで同一のメソッドを使用して取引先レコードを作成することで、入力規則が変更された場合にそのメソッドを更新するだけで、他の多くのテストメソッドの変更を回避することができます。
□ 有効な取引先レコードを静的リソースからロードするメソッドを作成し、テストメソッド内でこのメソッドを呼び出します。
これは正解です。静的リソースからテストデータをロードすることで、コード内でテストデータをハードコードする必要がなくなります。入力規則が変更された場合、静的リソースのみを更新することで対応が可能になり、テストメソッドの変更を最小限に抑えることができます。
□ 有効な取引先レコードのコールアウトを実行するメソッドを作成し、テストメソッド内からこのメソッドを呼び出します。
これは不正解です。テストメソッドの中で実際のコールアウトを実行するのは一般的に推奨されていません。また、テスト実行時に外部システムとの依存関係が生まれることは避けるべきです。
□ 有効な取引先レコードを照会するメソッドを作成し、テストメソッド内からこのメソッドを呼び出します。
これは不正解です。テストメソッドは他のデータに依存しない状態で実行されるべきです。つまり、テスト実行時に組織内の既存データを照会して使用するのは適切ではありません。テストメソッドは独立して、一貫した結果を提供する必要があります。
コメント