dポイントプレゼントキャンペーン実施中!

JUnitで以下のようなコードをテストしましたが、カバレッジが100%とはなりません。
どのようにすれば100%を確保できませすでしょうか。

① IF a>0 ||
②   b>0 ||
③   c>0 ||

aに5をセットしてテスト実行すると①は通過、②、③は未通過と判断されます。
一番最後の条件のcに5をセットすれば、①、②、③とも通過と判断されますでしょうか。

A 回答 (3件)

短絡評価の論理和が3個有るので、カバレッジを満たすパターンは4個必要です



例)
if (a>0 || b>0 || c>0 || ... ) { ... }
a=1, b=0, c=0 → 1だけ通過
a=0, b=1, c=0 → 1-2を通過
a=0, b=0, c=1 → 1-3を通過
a=0, b=0, c=0 → 1-3と後続条件を通過
    • good
    • 0
この回答へのお礼

詳細に解説いただき、理解できました。
ご回答ありがとうございました。

お礼日時:2017/07/18 10:39

ANO2 さんのようなパターン、いる可能性高いです。


本当はC1なら、ifの中の論理式がtrueとfalseのパターンだけで
いいんですが、Jacocoみたいにbytecodeで分岐網羅という方針だと
JavaレベルではC1でもC2なみになってしまうことが多いですね。

ifの中に式を書くのやめないと、単体テスト工数、増えちゃいます。
    • good
    • 0
この回答へのお礼

アカデミックに説明いただき、とても勉強になりました。
ありがとうございました。

お礼日時:2017/07/18 10:38

>① IF a>0 ||


>②   b>0 ||
>③   c>0 ||

何ですか? これ!
    • good
    • 0
この回答へのお礼

コメントありがとうございます。
後続のご回答にありますが、||はORの意味です。

お礼日時:2017/07/18 10:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!