相关疑难解决方法(0)

我应该测试私有方法还是仅测试公共方法?

我读过这篇关于如何测试私有方法的帖子.我通常不测试它们,因为我一直认为只测试从对象外部调用的公共方法会更快.你测试私人方法吗?我应该经常测试吗?

language-agnostic testing unit-testing

329
推荐指数
16
解决办法
10万
查看次数

使用PHPUnit测试受保护方法的最佳实践(在抽象类上)

使用PHPUnit和PHP> = 5.3,可以测试受保护的方法.stackoverflow的以下页面概述了它的最佳实践:

"使用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);
}
Run Code Online (Sandbox Code Playgroud)

使用PHPUnit可以轻松地在抽象类上测试公共方法.使用上述方法可以轻松地测试正常类上的受保护方法.要测试抽象类上的受保护方法必须以某种方式...

我知道PHPUnit派生抽象类并在具体类中"实现"抽象方法并针对该具体类触发测试 - 但我不知道如何将其集成到上面的方法中以获得callProtectedMethodOnAbstractClasses().

你是怎么做这样的测试的?

PS:问题不在于测试受保护方法的真相(参见:白色,灰色和黑盒测试).测试受保护方法的需要取决于您的测试策略.

php methods phpunit protected abstract

12
推荐指数
2
解决办法
1万
查看次数

php类函数包装器

这是我的班级:

class toyota extends car {
    function drive() {
    }
    function break() {
    }
}

class car {
    function pre() {
    }
}
Run Code Online (Sandbox Code Playgroud)

我有什么方法可以这样做,当我运行$ car-> drive(),$ car-> break()(或丰田中的任何其他函数)时,它会先调用$ car-> pre()然后再调用丰田的功能?

php oop

4
推荐指数
1
解决办法
3733
查看次数

Php:如何将私有静态方法公开,并且类不能被解释?

abstract class MyClass
{
    private static makeMePublic()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

我想让MyClass :: makeMePublic方法可以从外部调用.我在这里看到了一个解决方案:使用PHPUnit测试受保护方法但需要对类进行实例化的最佳实践.在这种情况下,它是不可能的.那么,如何制作"公开"这种方法呢?

php reflection

3
推荐指数
1
解决办法
1008
查看次数

如何对受保护的方法进行单元测试?

有没有办法对类的受保护或私有方法进行单元测试?现在,我公开了很多方法以便能够测试它们,这破坏了 API。

编辑:实际上在这里回答:使用 PHPUnit 测试受保护方法的最佳实践

phpunit

3
推荐指数
1
解决办法
7245
查看次数