2

所以我使用 PHPUnit 进行测试。尝试在我的一项测试中使用 DataProvider。

/**
 * 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 很重要,我已经检查了更新,它告诉我一切都是最新的。

4

2 回答 2

1

我正在经历

....

时间:0秒,内存:12.75Mb

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

/**
 * 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")
        );
}

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

于 2012-05-19T06:58:29.827 回答
1

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

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

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

于 2012-05-20T19:20:21.297 回答