我对PHPUnit有一个奇怪的问题。我正在与一个开发团队合作开发一个项目,所有开发人员都必须使用PHPUnit 3.6.5。在大多数情况下,我的PHPUnit运行良好,并产生与其他开发人员的机器相同的结果。但是,我偶尔会发现某台线路没有覆盖在我的机器上,而是在其他开发人员的机器上。这是最近的一个场景:
在进行了我自己的一组更改后,我运行了应用程序的所有phpunit测试,但我注意到其中一个文件没有足够的代码覆盖率。这是Bob刚刚签入的文件。我与团队中的其他一些开发人员核对,文件传递代码覆盖率,没有任何问题。当我检查代码覆盖率报告时,我看到以下内容:
array_walk(
$variable1,
function($val,$key) use(&$variableData, &$variable2)
{
$variableData[$variable2][$key] = 1;
}
);
$变量1,
函数($ val,$ key)使用(& $ variableData,& $ variable2)
这两行不包括在内!我不明白为什么我的phpunit不想覆盖这些行。必须有一个我不知道的设置导致这个,因为我有与其他开发人员相同版本的PHPUnit,并且它在他们的机器上正常传递但在我的机器上没有。我也在这样的声明中看到同样的问题:
if ($var === 1) {
echo 'yes';
} else {
echo 'nope';
}
现在,单元测试将涵盖这两个条件,但是,它不包括以下行:
}其他{
这有什么意义吗?关于它的最奇怪的部分是它在大多数时间都有效,但是有一些位置具有这种行为,尽管没有模式来指示它导致它的原因。我有其他开发人员在我的机器上查看这个问题,他们感到困惑,无法解释是什么导致它。问题是,因为它在本地失败,即使我没有触及Bob的文件,它也阻止我检查我的更改。有没有人遇到过这个问题?我将尝试卸载php单元并重新安装它,但除此之外,我不知所措。任何帮助将不胜感激!这是我的规格:
PHPUnit:版本3.6.5 操作系统:OS X 10.6.8 PHP:PHP 5.3.8-ZS5.5.0(cli)(内置:2011年8月24日11:03:29) Zend Debugger:关闭了 XDebug:开启了 Zend Optimizer +:关闭
此致
威尔
答案 0 :(得分:1)
xdebug向PHPUnit报告可执行行和执行行。不同版本的xdebug可能会在报告为覆盖的行中有所不同。
如果您认为它们不正确,请提供一个简单的测试用例并在xdebug's issue tracker打开错误。