Phpunit没有执行有效的父测试用例?

时间:2013-05-08 12:49:15

标签: php unit-testing phpunit

我目前正在使用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在没有专门的时候正常执行。

所以,我的问题是你们:为什么?我在这里想念一下吗?这是设计吗?

0 个答案:

没有答案