3

我有一个testFoo()带有 dataProvider的 PHPUnit 测试fooProvider()。在开始时,testFoo()我使用 Runkit 重新定义一个方法,以便在该方法返回我重新定义它返回的内容时测试预期结果。但是,重新定义该方法有点费时,所以我希望它在这个测试中只发生一次。

PHPUnit 框架是否提供功能来指定我想在运行前只运行一次而不是为套件中的每个测试testFoo()返回的每个元素或每个测试运行一次的代码(如)?fooProvider()setUp()

4

1 回答 1

3

使用静态私有属性来标记该方法已被重新定义。您需要它是静态的,因为测试类是为 dataProvider 提供的每个案例实例化的。

class FooTest extends PHPUnit_Framework_TestCase
{
    private static $redefined = false;

    /**
     * @dataProvider fooProvider
     */
    public function testFoo()
    {
        if (! self::$redefined) {

            // redefinition code goes here

            self::$redefined = true;
        }
    }
}
于 2016-03-09T07:18:42.333 回答