1. ホーム
  2. maven

[解決済み] ラインカバレッジとブランチカバレッジの違い

2022-11-01 15:29:11

質問

私は、あるプロジェクトで Cobertura Maven プラグインを使用しています。しかし、私は生成されたレポートについて質問があります。

ラインカバレッジとブランチカバレッジの違いは何ですか?

どのように解決するのですか?

行カバレッジは、いくつのステートメントを取ったかを測定します(ステートメントは通常コードの行で、コメントや条件文などは含まれません)。ブランチ カバレッジは、各条件 (if, while, for) に対して true と false の分岐を取ったかどうかをチェックします。条件文の 2 倍の数の分岐があることになります。

なぜ気にするのでしょうか?例を考えてみましょう。

public int getNameLength(boolean isCoolUser) {
    User user = null;
    if (isCoolUser) {
        user = new John(); 
    }
    return user.getName().length(); 
}

このメソッドを isCoolUser に設定された true に設定すると、100%のステートメントカバレッジが得られます。いい感じですか?いいえ、もしあなたが false . しかし、最初のケースではブランチカバレッジが50%なので、テストに(そしてしばしばコードに)何かが欠けていることがわかります。