在我的 NetBeans 中,我使用 PHPUnit 建立了一个项目(ZF2 应用程序)。一切都很好,除了当我尝试收集代码覆盖率时,它无法覆盖某些行,我不明白也无法解释。
代码是这样的:
switch($type) {
case 'date':
return date('Y-m-d', strtotime($value));
case 'numeric':
default:
return $value;
}
在 UnitTest 测试这两种情况之后,这里没有覆盖 switch 语句的右括号。
其他示例:
foreach ($this->userRoleNames as $role) {
if (self::$acl->hasResource($moduleName)) {
if (self::$acl->isAllowed($role, $moduleName)) {
return true;
}
/* > */ }
if (self::$acl->hasResource($privilageName)) {
if (self::$acl->isAllowed($role, $privilageName)) {
return true;
}
/* > */ }
if (self::$acl->hasResource($privilageNameFull)) {
if (self::$acl->isAllowed($role, $privilageNameFull)) {
return true;
}
/* > */ }
}
这里/* > */
也没有涵盖所有包含的行,甚至单元测试也在测试任何可能的条件组合。
仅仅因为这些未被发现的行,我无法达到 100% 的代码覆盖率。
我在用
PHPUnit 3.7.22
PHP 5.3.10-1ubuntu3.8 with Suhosin-Patch
- Netbeans 7.4 (b. 201310111528)
注意:奇怪的是,在其他没有任何价值的或语句中if
,foreach
它们的右括号不匹配为已覆盖或未覆盖(覆盖线突出显示为绿色,未覆盖的红色 - 这些只是白色 - 见附件 img)因此对代码覆盖率没有影响...switch
return
}
有什么方法可以使 PHPUnit(NB 中的代码覆盖模块)或通过调整 PHPUnit 测试覆盖这些行?