为什么 gcov 不包含逻辑 && 运算符?
Why gcov is not covering logical && operator?
我正在做单元测试的代码是这样的:
if(((State !=TCPIP_IPADDR_STATE_ASSIGNED)&& (State !=TCPIP_IPADDR_STATE_ONHOLD) && (State !=TCPIP_IPADDR_STATE_UNASSIGNED)) ||(SoConId==DOIP_INVALID_16))
{
}
我的单元测试用例包括以下内容:
`DoIP_LocalIpAddrAssignmentChg(12,0xFF);`
其中DoIP_LocalIpAddrAssignmentChg为if所在的函数名,0xFF为无效状态,显然不等于所有3:TCPIP_IPADDR_STATE_ASSIGNED , TCPIP_IPADDR_STATE_ONHOLD, TCPIP_IPADDR_STATE_UNASSIGNED。
SoConId 的值为 12。 DOIP_INVALID_16的值=0xFF.
所以当我检查我的单元测试报告时,它给出了这个结果:
我的问题是为什么它没有涵盖 TCPIP_IPADDR_STATE_UNASSIGNED 的条件,因为我传递的状态值是 0xFF,这是无效值。
你是一个 "victim" 懒惰的评估者。
第 6.5.14 章"Logical OR opeartor":
If the first operand compares unequal to 0, the second operand is not evaluated.
多重与的所有三个部分都是 true
,因此不等于 0。
两个逻辑&&
都被覆盖了,但是你看不到,因为同一行的||
没有完全执行
我正在做单元测试的代码是这样的:
if(((State !=TCPIP_IPADDR_STATE_ASSIGNED)&& (State !=TCPIP_IPADDR_STATE_ONHOLD) && (State !=TCPIP_IPADDR_STATE_UNASSIGNED)) ||(SoConId==DOIP_INVALID_16))
{
}
我的单元测试用例包括以下内容:
`DoIP_LocalIpAddrAssignmentChg(12,0xFF);`
其中DoIP_LocalIpAddrAssignmentChg为if所在的函数名,0xFF为无效状态,显然不等于所有3:TCPIP_IPADDR_STATE_ASSIGNED , TCPIP_IPADDR_STATE_ONHOLD, TCPIP_IPADDR_STATE_UNASSIGNED。 SoConId 的值为 12。 DOIP_INVALID_16的值=0xFF.
所以当我检查我的单元测试报告时,它给出了这个结果:
你是一个 "victim" 懒惰的评估者。
第 6.5.14 章"Logical OR opeartor":
If the first operand compares unequal to 0, the second operand is not evaluated.
多重与的所有三个部分都是 true
,因此不等于 0。
两个逻辑&&
都被覆盖了,但是你看不到,因为同一行的||
没有完全执行