|
branch%についてhttp://works.dgic.co.jp/djwiki/Viewpage.do?pid=@6272616E636825E381ABE381A4E38184E381A6Encoding:UTF-8 / Locale:en_US / PageStatus: Frozen Owner of this page:kataoka |
version 0.8.0用ページ brunch%についてdjUnitのカバレッジレポートに出力される「brunch%」は、一般的な「分岐網羅(C1)」とは異なる値です。 version0.8.0でjcoverageの一部に修正を加えたため、オリジナルのjcoverageのbranch%とは異なる結果になります。 以下djUnitのbrunch%測定方法を解説します。 測定方法 ΛdjUnitは、バイトコード加工時に「条件分岐の行」を検出(あくまでもバイトコードレベルで)すると、 その行を「conditionライン」として保持します。 シンプルな分岐を例にします。 1 class Branch { 上記では、3, 4, 6行目がconditionラインです。 そして、カバレッジ計算時(レポート生成時)に、conditionラインを実行したかどうかを判定し、
がbranch%の値になります。 ですので、3, 4, 6行目が、すべて実行された場合、branch% = 100%となります。 もし、3, 6行目だけが実行された場合には、branch% = 66% となります。 このconditionラインは、現状のdjUnitでは、目で見ることができないため、わかりにくいです。 「分岐網羅(C1)」は、分岐条件を「true」「false」の両方の条件で実行して100%となるべきですが、 conditionラインについて Λもう少し複雑な場合のconditionラインの例を書きます。 1. if - else 下記のようなelse有りのときは、分岐網羅に近い値を測定できます。 1 class Branch { 2. if - elseif - else これも、分岐網羅に近い値を測定できます。 1 class Branch { 3. if - (if - else) - else - (if) 12行目にelse無しのifがあるため、分岐網羅を測定できません。 1 class Branch { 4. switch 1 class Branch { 以上 |