PHPUnit:dataProvider在PHPUnit_Framework_TestCase的子类中不工作

PHPUnit:dataProvider在PHPUnit_Framework_TestCase的子类中不工作,php,unit-testing,phpunit,Php,Unit Testing,Phpunit,我在测试中使用了从PHPUnit_Framework_TestCase扩展而来的类。而且,@dataProvider似乎不适用于这些扩展类 这里只是一个简单的测试 namespace HH\Api\V10; class StupidityTest extends TestCase { /** * @dataProvider additionProvider */ public function testAdd($a, $b, $expected) {

我在测试中使用了从PHPUnit_Framework_TestCase扩展而来的类。而且,
@dataProvider
似乎不适用于这些扩展类

这里只是一个简单的测试

namespace HH\Api\V10;

class StupidityTest extends TestCase
{
    /**
     * @dataProvider additionProvider
     */
    public function testAdd($a, $b, $expected)
    {
        $this->assertEquals($expected, $a + $b);
    }

    public function additionProvider()
    {
        return [
          [0, 0, 0],
          [0, 1, 1],
        ];
    }
}
phpunit返回此错误:

如果我使用
\PHPUnit\u Framework\u TestCase
而不是
TestCase
,那么它可以正常工作。但它不适用于这些扩展类:
TestCase
&
ApiTestCase

TestCase
class

namespace HH\Api\V10;

use HH\Api\ApiTestCase;

class TestCase extends ApiTestCase
{
}
namespace HH\Api;

use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
use GuzzleHttp\Message\Response;

class ApiTestCase extends \PHPUnit_Framework_TestCase
{
    protected $client = null;

    public function __construct()
    {
        parent::__construct(); // <--have called parent constructor
        $this->client = new Client([
            'base_url' => $this->url(),
        ]);
    }
    ....
}
ApiTestCase
class

namespace HH\Api\V10;

use HH\Api\ApiTestCase;

class TestCase extends ApiTestCase
{
}
namespace HH\Api;

use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
use GuzzleHttp\Message\Response;

class ApiTestCase extends \PHPUnit_Framework_TestCase
{
    protected $client = null;

    public function __construct()
    {
        parent::__construct(); // <--have called parent constructor
        $this->client = new Client([
            'base_url' => $this->url(),
        ]);
    }
    ....
}
namespace HH\Api;
使用http\Client;
使用http\Exception\RequestException;
使用http\Message\Response;
类ApitTestCase扩展\PHPUnit\u框架\u测试用例
{
受保护的$client=null;
公共函数构造()
{
父::_construct();//客户机=新客户机([
'base_url'=>$this->url(),
]);
}
....
}

任何帮助都将不胜感激。谢谢

您应该使用
setUp
fixture来设置
$client

最终找到了它不起作用的原因

子类的构造函数需要与父类的构造函数相同
PHPUnit\u Framework\u TestCase

class ApiTestCase extends \PHPUnit_Framework_TestCase
{
    protected $client = null;

    public function __construct($name = null, array $data = array(), $dataName = '')
    {
        parent::__construct($name, $data, $dataName);
        ...
    }
 ...
}
但是我发现更好的方法不是通过构造函数,而是通过fixture

public function setUp()
{
    $this->client = new Client([
        'base_url' => $this->url(),
    ]);
}