能否实现100%分支覆盖却未达100%语句覆盖?求相关实例
能否实现100%分支覆盖但未达到100%语句覆盖?
哈哈,这个问题其实挺有意思的——答案是完全不可能,而且逻辑比你想的更直白!
先把两个覆盖的核心定义理清楚:
- 分支覆盖(判定覆盖):要求代码中每个条件判定的「真」「假」分支都被执行至少一次。
- 语句覆盖:要求代码中每一条可执行语句都被执行至少一次。
关键逻辑就在这儿:所有可执行语句必然属于某一条分支路径。也就是说,只要你把所有判定的真假分支都跑过一遍,所有在这些路径上的语句肯定都会被执行到。不存在一条可执行语句能躲开所有分支路径的覆盖——如果真有这样的语句,那它本质是「不可达死代码」,而测试覆盖统计的是可执行、可达的有效代码,这类死代码本来就不算在覆盖范围内。
给你举个反例对比(这是语句覆盖达标但分支覆盖不足的常见场景,反过来的情况不存在):
def grade_score(score): if score >= 60: print("及格") else: print("不及格") print("评分结束")
如果只测试score=80,语句覆盖是100%(三条print都执行了),但分支覆盖只有50%(没走else分支)。但如果你要做到100%分支覆盖,就必须同时测试score>=60和score<60两种情况,这时候三条print语句必然全部被执行,语句覆盖自然也是100%。
所以你并没有忽略什么要点,也不是过度思考——分支覆盖的要求本身就比语句覆盖更严格,达到100%分支覆盖的前提下,语句覆盖必然是满的。
内容的提问来源于stack exchange,提问作者tom
相关产品推荐
相关产品推荐

