Java の NullPointerException は不便 ― 2025年02月05日 13時29分05秒
十年来の Java 言語復帰。Java で書かれたプログラムを引き継いだのが切っ掛け。残念な事にテストコードは貧弱だった。コードの量も多めで、コードに変更を加えるとどう変わるか追うのが大変な量。
最初は、テストコードを書いて各関数、各クラスの動作が変わっていないかを検証しつつ、Java 復帰の手始めに始めた。
テストコードを書く時に大変なのが、コードの前提条件の状態に持っていくこと。Spring Framwork、Beans、データベースなどが多彩に絡み合っているので、Mockito を駆使して、外部依存部分を分離しつつテストコードを加えていく。
この時に大量に遭遇するのは NullPointerException。クラスインスタンスがあるべき所が初期化されずに null のままだと、これが投げられる。関数呼び出しが原因だ。そして、NullPointerException が投げられる場所を特定し、Mockito で補うか、正規な方法で正しく初期化をする。
このプログラムは不慮のクラッシュを避けるため、あちこちに RuntimeException も catch するようになっている。そのため、NullPointerException が投げられても勝手に無視して、実行が継続される状態になっている。C/C++ の様にコアダンプで強制終了してくれれば、一目で分かるので良かったのに。
最近のコメント