PHPUnit:dataProvider 在 PHPUnit_Framework_TestCase 的子类中不起作用

标签 php unit-testing phpunit

我在测试中使用从 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 返回这个错误:

enter image description here

如果我使用 \PHPUnit_Framework_TestCase 而不是 TestCase 那么它工作正常。但它不适用于这些扩展类:TestCaseApiTestCase

测试用例

namespace HH\Api\V10;

use HH\Api\ApiTestCase;

class TestCase extends ApiTestCase
{
}

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(),
        ]);
    }
    ....
}

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

最佳答案

终于弄明白为什么不成功了。

子类的构造函数需要与父类PHPUnit_Framework_TestCase 的构造函数相同。

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

    public function __construct($name = null, array $data = array(), $dataName = '')
    {
        parent::__construct($name, $data, $dataName);
        ...
    }
 ...
}

但我发现更好的方法不是通过构造函数,而是使用固定装置。

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

关于PHPUnit:dataProvider 在 PHPUnit_Framework_TestCase 的子类中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28828494/

相关文章:

java - Jenkins 和 Maven : how to package some files in my JAR and unpack them before running a test?

php - 是否有PHPUnit的分层测试运行器?

json - "Trying to get property of non-object"在 Symfony 4.1 上执行 JSON 请求测试时

php - CodeIgniter:多个应用程序,如何共享资源?

php - mysql 统计行数并按月分组

javascript - 如何从动态 <select> 选项中知道选择 id?

php - 使用 PHPExcel 保护 Excel 文件

使用条件对概率分布进行单元测试

unit-testing - JUnit 使用嵌入式服务器测试 Cassandra

ZF 表单验证后 PHPunit 测试未通过