このトピックでは、「実行時例外」カテゴリの結果について詳しく説明します。

説明

「単体テストの問題の修正」 > 「実行時例外」メッセージは、テスト ケースで予想外の例外 (記述されていない、テスト ケースのコードで対処されていない例外) が発生したときにレポートされます。例外の発生はコードの堅牢さが不十分なことを表します。本番環境で例外が発生すると、フローが予想外に移動したりスレッドが終了したりすることによって、不安定な動作や予想外の結果が発生するだけでなく、クラッシュやセキュリティ違反が起こることさえあります。

デプロイされたアプリケーションの実行中に例外が発生した場合、システムとアプリケーションが不安定になったり、サービス拒否攻撃などのセキュリティの脆弱性が発生したり、ダウン タイムが頻繁に起こったりします。

単体テストの実行中に例外がレポートされた場合、テスト ケースの実行によって、テスト対象コードが例外をスローする条件が発生したことを表します。テスト対象のコードをアプリケーションに統合した後に、同じ条件がアプリケーションで発生して例外がスローされる可能性があります。上で説明したとおり、デプロイされたアプリケーションの実行中にこの例外が発生するのは、非常に重大な問題です。

推奨される対応

このカテゴリでレポートされる例外は、不正な動作のメソッド、つまり与えられた引数に対して例外をスローしてはいけないメソッドを表します。

キャッチされない実行時例外がレポートされた場合、他のコードの作業に移る前にすべての例外に対処することを推奨します。コードの変更が必要な場合、開発プロセスの後の段階で対処するよりも、レポートされてすぐに修正する方が簡単であり労力もかかりません。コードが正しく動作している場合、その動作を明確に文書化することによって混乱を防ぎエラーの挿入を防ぐことができます。コードの正しい動作を他の開発者がわかるようにしておけば、エラーが誤って挿入される可能性が低くなります。

単体テストの実行中に例外が発生した場合、次の対応を推奨します。

  • 例外がテスト対象コード中のバグを示しているのか、それともテスト対象コードを呼び出しているテスト ハーネスによって発生しているのかを判断します。
  • テスト対象のコード中のバグによって例外が発生している場合、コードを修正します。
  • 例外が意図的な物である場合、「テスト スイート/テスト ケースの登録マクロ」の説明にあるように、
    CPPTEST_TEST_EXCEPTION を使ってテスト ケースの登録を変更します。
  • 多くの場合、例外の原因は例外が出現したテスト対象コードではなく、テスト対象コードを呼び出しているコードです。テスト対象コードを呼び出しているアプリケーション コードをレビューし、テスト ハーネスによって発見された既知の例外を引き起こす条件をアプリケーションが生成できないようにします。

テスト対象コードは、後であなたのコントロール下にないコードから呼び出されるかもしれません。そして、この例外を引き起こす条件が発生するかもしれません。したがって、例外を引き起こす入力からコードを守ることが絶対に必要です。

  • No labels