Php 如何访问数据提供程序的号码';当前的数据集是什么?

Php 如何访问数据提供程序的号码';当前的数据集是什么?,php,phpunit,Php,Phpunit,在PHPUnit中,对于用@dataProvider修饰的测试,是否有办法找到当前使用的数据集索引(在dataProvider提供的数组中)?方法1-格式数组 您必须格式化数据提供程序方法以提供数组索引($key)以及$value: <?php class DataProviderTest extends \PHPUnit_Framework_TestCase { /** * @dataProvider provider */ public funct

在PHPUnit中,对于用
@dataProvider
修饰的测试,是否有办法找到当前使用的数据集索引(在dataProvider提供的数组中)?

方法1-格式数组 您必须格式化数据提供程序方法以提供数组索引
($key)
以及
$value

<?php

class DataProviderTest extends \PHPUnit_Framework_TestCase
{
    /**
     * @dataProvider provider
     */
    public function testMethod($key, $value)
    {
        if ($key === 1) {
            $this->assertEquals('two', $value, 'pass');
        }

        if ($key === 2) {
            $this->assertEquals('two', $value, 'fail');
        }
    }

    public function provider()
    {
        $data = array('one', 'two', 'three');

        $holder = array();
        foreach ($data as $key => $value) {
            $holder[] = array($key, $value);
        }

        return $holder;
    }
}
还有

    /**
     * Gets the data set description of a TestCase.
     *
     * @param bool $includeData
     *
     * @return string
     */
    public function getDataSetAsString($includeData = true)
这将返回如下内容(例如)


这就是我现在正在做的。不过,我并不太喜欢它,因为它看起来冗余且效率低下(只为数组键添加了一个额外的循环)。我希望PHPUnit以某种方式公开数据集编号,因为它在特定数据集测试失败时也会打印数据集。@BernhardReiter添加了另一种使用PHPUnit内部结构的方法。对于未来的谷歌用户:在PHPUnit的最新版本中(从何时起不确定),有一个公共方法
dataDescription()
\PHPUnit\Framework\TestCase
中的
,它返回私有的
dataName
属性的值。虽然这只能在使用字符串作为键时使用,但如果只是查找数字键,则不会回答原始问题。@antriver根据最新的PHPDoc,
dataDescription()
是在5.4.0中添加的。在PHPUnit 9中,获取数据集索引/名称的方法已从
dataDescription
更改为
dataName
    /**
     * Gets the data set description of a TestCase.
     *
     * @param bool $includeData
     *
     * @return string
     */
    public function getDataSetAsString($includeData = true)
string(51) " with data set "Empty set with no columns from set""
string(87) " with data set "Empty set with no columns from set" (array(), array(), 0, '\n\n\n\n\n')"