首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >测试抽象类

测试抽象类
EN

Stack Overflow用户
提问于 2008-10-10 06:03:08
回答 5查看 57K关注 0票数 152

如何使用PHPUnit测试抽象类的具体方法?

我希望我必须创建某种对象作为测试的一部分。不过,我不知道这方面的最佳实践,也不知道PHPUnit是否允许这样做。

EN

回答 5

Stack Overflow用户

发布于 2018-02-20 23:47:02

需要注意的是,从PHP7开始,已经添加了对anonymous classes的支持。这为您提供了一种为抽象类设置测试的额外途径,这种方法不依赖于特定于PHPUnit的功能。

代码语言:javascript
复制
class AbstractClassTest extends \PHPUnit_Framework_TestCase
{
    /**
     * @var AbstractClass
     */
    private $testedClass;

    public function setUp()
    {
        $this->testedClass = new class extends AbstractClass {

            protected function abstractMethod()
            {
                // Put a barebones implementation here
            }
        };
    }

    // Put your tests here
}
票数 40
EN

Stack Overflow用户

发布于 2011-02-14 07:46:55

这是个好问题。我也一直在找这个。

幸运的是,对于这种情况,PHPUnit已经有了getMockForAbstractClass()方法,例如

代码语言:javascript
复制
protected function setUp()
{
    $stub = $this->getMockForAbstractClass('Some_Abstract_Class');
    $this->_object = $stub;
}

重要信息:

请注意,这需要PHPUnit > 3.5.4。在以前的版本中有a bug

要升级到最新版本,请执行以下操作:

代码语言:javascript
复制
sudo pear channel-update pear.phpunit.de
sudo pear upgrade phpunit/PHPUnit
票数 39
EN

Stack Overflow用户

发布于 2008-11-12 18:48:11

Eran,您的方法应该可以工作,但它与在实际代码之前编写测试的趋势相反。

我建议在所讨论的抽象类的非抽象子类的期望功能上编写测试,然后编写抽象类和实现子类,最后运行测试。

显然,您的测试应该测试抽象类的已定义方法,但始终通过子类进行测试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/190295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档