对于PHPUnit,使用数据提供程序,最后一个数据集始终显示;测试用例被意外终止;

对于PHPUnit,使用数据提供程序,最后一个数据集始终显示;测试用例被意外终止;,php,testing,phpunit,zend-studio,Php,Testing,Phpunit,Zend Studio,所以我使用PHPUnit进行测试。正在尝试在我的一个测试中使用数据提供程序 /** * Tests Events_Event->Events_Event() * @dataProvider provider */ public function testEvents_Event($Name, $param, $time) { //$this->assertInstanceOf("Events_Event", $this->Events_Event->

所以我使用PHPUnit进行测试。正在尝试在我的一个测试中使用数据提供程序

/**
 * Tests Events_Event->Events_Event()
 * @dataProvider provider
 */
public function testEvents_Event($Name, $param, $time) {
        //$this->assertInstanceOf("Events_Event", $this->Events_Event->Events_Event("test2", array()));
        $this->assertTrue(true);
    }

public static function provider()
    {
        return array(
            array("test", array("Like a boss"), "Cheack the time"),
            array("test2", array("Like a boss"), "9:00"),
            array("test3", array("Time to go home"), "4:00"),
            array("test3", array("Time to go home"), "4:00")
            );
    }
结果是:

testEvents_Event with data set#0
testEvents_Event with data set#1
testEvents_Event with data set#2
testEvents_Event with data set#3: The test case was unexpectedly terminated
这发生在最后一个数据集上,不管有多少数据集,也不管最后一个数据集是否有效。如您所见,我们已经将测试简化为一个简单的
$this->assertTrue(true)
,它仍然会给我们带来错误

我们需要做什么才能让数据提供程序正常工作

如果我在Zend Studio 9.0.3中使用PHPUnit很重要,我已经检查了更新,它告诉我所有的更新都是最新的。

我正在经历

....
时间:0秒,内存:12.75Mb

OK(4个测试,0个断言)

如何运行测试?是否没有任何其他依赖项?
通过任何IDE运行的测试?

PHPUnit为每个数据提供程序方法实例化测试用例。由于PHP的魔力,您可以不用使用静态数据提供程序方法,但它们是使用实例调用的,因此应该是非静态的

如果您的测试用例有一个构造函数,它必须接受三个参数(参见
PHPUnit\u Framework\u TestCase
)并将它们传递给父构造函数。其中之一是来自特定测试的提供者的数据


然而,我怀疑这就是问题所在。我的钱在ZendStudio上,以及它如何按照Gordon的建议解析PHPUnit的输出。当您从命令行运行此测试用例时,您是否看到了相同的问题?

在启用xdebug的情况下本地运行这些测试,并逐行遍历代码,直到出现该错误为止。时间很紧,但在没有任何其他线索的情况下,这是找到答案的唯一途径。将有助于为包含该错误文本的行grep PHPUnit代码,然后在那里设置断点,当它停止时,使用stacktrace查看它的位置。尝试将PHPUnit升级到最新版本version@MattGibson我真的希望在不弄脏的情况下得到答案。但如果我无法通过谷歌搜索找到任何地方,这绝对是一个好方法。@Chris这可能是Zend Studio中的一个bug。他们用自己的脚本包装PHPUnit,我从我过去给他们的bug报告中知道,他们有时会失败。因此,您可以尝试创建可复制的测试用例,并将其提交给Zend支持。@Spudley我指的是一个包含整个类声明的完整测试用例,以便支持可以运行它。
/**
 * Tests Events_Event->Events_Event()
 * @dataProvider provider
 */
public function testEvents_Event($Name, $param, $time)
{

}

public static function provider()
{
    return array(
        array("test", array("Like a boss"), "Cheack the time"),
        array("test2", array("Like a boss"), "9:00"),
        array("test3", array("Time to go home"), "4:00"),
        array("test3", array("Time to go home"), "4:00")
        );
}