更正
问题不在于 PHPUnit 本身,而在于 PHP_CodeCoverage。那里的解析逻辑有些重复,PHPUnit 修复(见下文)在这种情况下没有帮助。
为 3.6 修复此问题的补丁是:
diff --git a/PHP/CodeCoverage/Util.php b/PHP/CodeCoverage/Util.php
index f90220d..54ce44b 100644
--- a/PHP/CodeCoverage/Util.php
+++ b/PHP/CodeCoverage/Util.php
@@ -196,12 +196,12 @@ class PHP_CodeCoverage_Util
} catch (ReflectionException $e) {
return array();
}
- $docComment = $class->getDocComment() . $method->getDocComment();
+ $docComment = substr($class->getDocComment(), 3, -2) . PHP_EOL . substr($method->getDocComment(), 3, -2);
foreach (self::$templateMethods as $templateMethod) {
if ($class->hasMethod($templateMethod)) {
$reflector = $class->getMethod($templateMethod);
- $docComment .= $reflector->getDocComment();
+ $docComment .= substr($reflector->getDocComment(), 3, -2);
unset($reflector);
}
}
我已经在https://github.com/sebastianbergmann/php-code-coverage/issues/121
.
在此修复程序发布之前(很可能这只发生在 PHPUnit 3.7 中),您需要使用三个内衬。
老答案:
旧版本的 PHPUnit 不能使用一行注释。
PHPUnit 试图找到一个名为的类/方法组合:"MyClass::bar *//**"
使用三行注释适用于所有版本
/**
* @covers MyClass::bar
*/
我修复了这个PHPUnit 3.6.4
。
见Issue 328
。
从PHPUnit >= 3.6.4
您的代码中应该可以正常工作。