所以我了解到分支覆盖与决策覆盖不同,因为分支覆盖通常还包括无条件分支,例如方法调用,在C#中使用throw,break和其他关键字。 但我想知道,这种分支覆盖实际上是用在代码分析器中吗?我怀疑他们使用决策覆盖,确保涵盖所有决策结果(即产生的分支)。 我的意思是,以下代码有2个条件,但有5个无条件分支:
if(A)
B();
C();
D();
E();
else
X();
我相信如果我编写一个测试来评估A只是假,代码分析器会告诉我分支覆盖率为50%。但是从无条件的分支角度来看,更多的将被执行。 这是对的吗?
答案 0 :(得分:0)
分支机构覆盖范围不会告诉您决定是否已经过测试,无论是真还是假。
示例:
if (c) {
x=...
}
y=...
如果c的计算结果为TRUE,则执行包含x = ...的块,并且 分支覆盖将检测到。它还将检测到从y开始的代码已被执行。因此,如果C为真,您将获得100%的覆盖率,而不知道如果C为假则会发生什么。
通过决策覆盖,如果您有100%的覆盖率,您就会知道C已被评估并产生TRUE和FALSE。
如果您的条件if具有then块和一个else块,那么分支覆盖和决策覆盖将为您提供相同的信息。