統合テストでNullPointerExceptionsを回避する必要がありますか?

While writing Integration tests for spring applications, I tend
to come across checks for different Multilevel Data Objects For Eg:
enter image description here

AssertNotNull("Node 10 is null", getNode1().getNode8().getNode10().getNode7());

This assertions works well provided that Objects A -> B ->
C are not null, otherwise if any one of these is null, you end up
with an NPE.

最初の見解では、もっともらしい解決策は、すべての親ノード

AssertNotNull("Node 1 is null", getNode1());
AssertNotNull("Node 8 is null", getNode1().getNode8());
AssertNotNull("Node 10 is null", getNode1().getNode8().getNode10());
AssertNotNull("Node 7 is null", getNode1().getNode8().getNode10().getNode7());

しかし、私がすべてのノードでやってみると、あちこちに浮かんだコードが詰まってしまいます。

それは開発コードではないので、私は失敗の原因を見てみたいと思います。この場合、NPEを避けるか、まったくそれを避けないのがベストプラクティスでしょうか?

ベストアンサー

2つのケースでは、 Node10 の構造が NULL
である可能性があります

  1. ツリーを Node8 に正常に渡すと、 Node10
    への参照が存在しないことがわかります。
  2. または、 Node10 へのルート上のノードが存在しないことを認識しているので、
    Node10 への参照も存在しません。存在しないので、 Node10
    はnullでないと主張できません)

あなたのアサーションを行うには、 Node10
(アルゴリズムがどのように構造が構築されているかに依存します。例えば、再帰かもしれません)各レベルに次のステップが存在するかどうかをノードごとにチェックします。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です