問題
Apexで単体テストを作成する場合、以下のどの記述が正しいですか。
- 複数のメソッドを使用した単体テストでは、1つのメソッドが失敗するたびにすべてのメソッドが失敗します。
- テストカバレッジを拡大するには、1つのメソッドに多数のコード行を含む大規模なテストクラスが必要です。
- トリガーは、サンドボックスから実稼働環境に展開するために単体テストを必要としません。
- コードカバレッジを増加させないSystem.Assert文は、単体テストで重要な役割を果たします。
正解
- 複数のメソッドを使用した単体テストでは、1つのメソッドが失敗するたびにすべてのメソッドが失敗します。
- テストカバレッジを拡大するには、1つのメソッドに多数のコード行を含む大規模なテストクラスが必要です。
- トリガーは、サンドボックスから実稼働環境に展開するために単体テストを必要としません。
- コードカバレッジを増加させないSystem.Assert文は、単体テストで重要な役割を果たします。
解説
それぞれの選択肢の理由について説明します。
□ 複数のメソッドを使用した単体テストでは、1つのメソッドが失敗するたびにすべてのメソッドが失敗します。
これは不正解です。Apexの単体テストでは、各テストメソッドは独立して実行されます。1つのテストメソッドが失敗しても、他のテストメソッドに影響はありません。失敗するテストメソッドのみが失敗とマークされ、他のテストメソッドはその結果に基づいて評価されます。
□ テストカバレッジを拡大するには、1つのメソッドに多数のコード行を含む大規模なテストクラスが必要です。
これは不正解です。テストの目的は、可能な限り多くのコード行をテストすることではなく、重要な機能とエッジケースをカバーすることです。コードカバレッジを増やすために大量のコードを含むテストメソッドを作成すると、テストの可読性と保守性が低下し、テストの品質が落ちる可能性があります。
□ トリガーは、サンドボックスから実稼働環境に展開するために単体テストを必要としません。
これは不正解です。Apexトリガーは、サンドボックスから実稼働環境に展開する前に、全体のApexコード(クラスとトリガーを合わせたもの)の少なくとも75%のカバレッジを持っている必要があります。また、各トリガーには最低1%のカバレッジが必要です。この1%のカバレッジは、少なくとも1つのテストメソッドがトリガーの一部をカバーしていることを確認するためのものです。つまり、全体のカバレッジが75%以上であっても、任意のトリガーがテストされていない場合、そのトリガーはデプロイできないことを意味します。
□ コードカバレッジを増加させないSystem.Assert文は、単体テストで重要な役割を果たします。
これは正解です。System.Assert
文はテストメソッド内で期待される結果と実際の結果を比較するために使用されます。これはコードの正確性を確認するために不可欠です。System.Assert
文自体はコードカバレッジを増やしませんが、テストの品質を確保する上で非常に重要です。
コメント