我觉得php中的代码覆盖率有时不是100%。让我们假设这一行:
if ($a == 1 && $b == 2)
{
// something
}
调用thisMethod(1)
时所有行都变为绿色,但$b == 2
实际上未被检查过。它甚至可能是一个函数,在JUnit中,if行至少会变成黄色
答案 0 :(得分:0)
这是&&
的预期行为。如果条件的第一部分为假,则它甚至不执行第二部分。如果您想要检查这两个部分,请使用&
。例如:
function increase_a() {
global $a;
$a++;
return false;
}
function increase_b() {
global $b;
$b++;
return false;
}
$a = 0;
$b = 0;
echo "Results for &&:<br />";
echo (increase_a() && increase_b()) ? "1" : "0";
echo "<br />";
echo $a . " " . $b . "<br />";
$a = 0;
$b = 0;
echo "Results for &:<br />";
echo (increase_a() & increase_b()) ? "1" : "0";
echo "<br />";
echo $a . " " . $b . "<br />";
输出:
Results for &&:
0
1 0
Results for &:
0
1 1
PHPFiddle链接:http://phpfiddle.org/main/code/bhdc-0ejf