[英]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.