在我的NetBeans中,我已经设置了一个ZF2应用程序的项目,并使用PHPUnit。一切都很好,但是当我尝试收集代码覆盖率时,它无法覆盖某些行,我不理解也无法解释。
代码如下:
代码如下:
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
或switch
语句中,它们的闭合括号}
既不匹配为已覆盖也不匹配为未覆盖(已覆盖的行呈绿色突出显示,未覆盖的行呈红色 - 这些行只是白色的 - 请参见附图),因此对代码覆盖率百分比没有影响...
是否有任何方法可以使PHPUnit(NB中的代码覆盖模块)或通过调整PHPUnit测试覆盖这些行?
if
语句的问题... - shadyyxreturn ...;
... 听起来很奇怪... - shadyyx