目前,我尝试将PHPUnit集成到我的项目中。为了确保随着时间的推移100%的测试覆盖率,我想检查一下testclass中是否存在要测试的类中的所有方法。所以我想我可以写一些类似的东西
class MyClassTest extends PHPUnit_Framework_TestCase {
private function _getClassFunctions($class) {
$class = new ReflectionClass($class);
return $class->getMethods();
}
public function testCompareFunctionCount() {
$this->assertEquals($this->_getClassFunctions('MyClass'), $this->_getClassFunctions(__CLASS__));
}
}
但是,ReflectionClass :: getMethods()似乎不仅对类本身的方法进行计数,而且还对所有扩展类进行计数。有没有办法防止这种行为?还是我弄错了什么?我在较旧的文章中读到ReflectionClass :: getMethods()在较旧的PHP版本上无法正常工作,但是我认为它可能现在已修复(那些文章已有4年以上的历史了……)
我使用PHP 5.4.5 。
您必须自己做一些工作:
private function _getClassFunctions($className) {
$class = new ReflectionClass($className);
$result = array();
foreach($class->getMethods() as $method) {
if ($method->class == $className) {
$result[]=$method;
}
}
return $result;
}
比较$method->class
以$className
将结果缩小为仅包含在所讨论类中的方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句