jUnitでは
テストメソッドが例外を送出したときにテスト失敗として扱うため、通常はthrows句にExceptionクラスを指定します。
一般的な
Javaのコーディング標準では、メソッドのthrows句にThrowableやExceptionなどの基底となる例外クラスを指定することを禁止しています。
これは、例外処理を適切に行うために重要なルールであり、レビューや静的コード解析ツールなどでチェックするされる項目となっています。
しかしながら、jUnitでユニットテストを書く場合は状況が異なります。
テストメソッドはjUnitによって実行されるメソッドであり、例外処理はフレームワーク上で行われます。
テストメソッドから期待されていない状態で例外が送出された場合、そのテストは失敗とし、エラーメッセージが表示されるしくみです。
したがって、throws句に送出される可能性がある例外を詳細に列挙したかどうかは、テストの挙動に影響を与えません。
また、テストメソッド内ではさまざまなクラスが利用されます。
テストコードを書いたあとにAPIの仕様を変更し、新しいタイプの例外が送出されるかもしれません。
そのたびにテストメソッドのthrows句を修正するのは非常に面倒です。
これらの理由から、コーディング基準に含まれる「throws Exceptionの禁止」はテストコードに適用すべきではありません。
最終更新:2016年01月22日 07:23