繁体   English   中英

phpunit无法执行有效的父测试用例?

[英]Phpunit does not execute effective parent test case?

我目前正在使用PHPUnit(CLI)测试API的包装。 由于测试的性质,我几乎可以使用相同的代码来测试两个不同的用例。 唯一的区别在于我作为参数发送给API的值。

因此,我决定编写一个类DefaultTest,在其中使用API​​使用的默认值测试API,并在第二个CustomTest(Case)中使用不同的值测试参数容器。 CustomTest继承自DefaultTest,因为在两种情况下,用于验证返回数据的所有功能都是等效的。

以下是供您理解的代码:

class DefaultTest extends PHPUnit_Framework_TestCase {

    public function testAPIMethod()
    {
        $this->checkParameterContainer();
        $this->validateResults();
    }

    public function checkParameterContainer() 
    {
        /* Set up default parameter container */
    }

    public function validateResults() 
    {
        /* Validate the results */
    }
}

class CustomTest extends DefaultTest {

    public function checkParameterContainer() 
    {
        /* Set up custom parameter container */
    }

    public function validateResults() 
    {
        parent::validateResult();
    }
}

PHPUnit接收子类,执行testAPIMethod,导致CustomTest :: checkParameterContainer()和DefaultTest :: validateResults()被执行。

但是从不执行DefaultTest的testAPIMethod,因为从不调用DefaultTest :: checkParameterContainer()。

这两个类都是完全有效的TestCases,并且在未专门化时会正常执行DefaultTest。

所以,我对你们的问题是:为什么呢? 我在这里想念什么吗? 这是设计使然吗?

以防万一,有人需要它:PHPUnit使用反射在每个类上查找测试方法,但不会在父类中搜索。 因此,在子测试类中将需要以下内容:

public function testAPIMethod()
{
    parent::testAPIMethod();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM