【发布时间】:2013-12-07 03:18:18
【问题描述】:
在我的 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.22PHP 5.3.10-1ubuntu3.8 with Suhosin-Patch- Netbeans 7.4(b. 201310111528)
注意:奇怪的是,在其他if、foreach 或switch 语句中,没有return 任何值,它们的右括号} 不匹配未覆盖(覆盖的行以绿色突出显示,未覆盖的行以红色突出显示 - 这些只是白色 - 见附件 img)因此对代码覆盖率没有影响...
有什么方法可以让 PHPUnit(NB 中的代码覆盖模块)或通过调整 PHPUnit 测试覆盖这些行?
【问题讨论】:
标签: php phpunit code-coverage netbeans-7 netbeans-7.4