【发布时间】:2011-06-27 23:22:18
【问题描述】:
使用 PHPUnit 和 PHP >= 5.3 可以测试受保护的方法。 stackoverflow 的以下页面概述了它的最佳实践:
"Best practices to test protected methods with PHPUnit"
protected static function callProtectedMethod($name, $classname, $params) {
$class = new ReflectionClass($classname);
$method = $class->getMethod($name);
$method->setAccessible(true);
$obj = new $classname($params);
return $method->invokeArgs($obj, $params);
}
使用 PHPUnit 测试抽象类的公共方法很容易。 使用上述方法很容易在普通类上测试受保护的方法。 必须以某种方式测试抽象类上的受保护方法......
我知道 PHPUnit 在具体类中派生抽象类和“实现”抽象方法,并针对该具体类触发测试 - 但我不知道如何将其集成到上述方法中以获得 callProtectedMethodOnAbstractClasses()。
你是怎么做这些测试的?
PS:问题不在于测试受保护方法的真实性(请参阅:白盒测试、灰盒测试和黑盒测试)。测试受保护方法的需求取决于您的测试策略。
【问题讨论】:
标签: php methods phpunit abstract protected