public void testIt(boolean a, boolean b){ ... if (a){ }该方法的圈复杂度=因此,根据基本路径测试,为了实现语句和决策覆盖,我们需要进行3次测试。但是,我发现我只能使用两个测试(true,true)和(false,false)来实现语句和决策覆盖。我的错误在哪里?
常规分支覆盖将需要两个单元测试来覆盖一个简单的if语句。但是,如果有像if (A && B)这样的组合条件,从控制流图的角度来看,如果使用短路,就会有额外的分支。这与圈复杂度计数是一致的,它给出了3(还应用了每个逻辑运算符增加复杂度1的规则,因为在短路的情况下会创建决策节点)。但据我所知,代码分析器并不考虑这些分支。