我有一个带有 dataProvider fooProvider()
的 PHPUnit 测试 testFoo()
。在 testFoo()
的开头,我使用 Runkit 重新定义了一个方法,这样我就可以在该方法返回我重新定义它要返回的内容时测试预期结果。但是,重新定义该方法有点耗时,所以我希望它在这个测试中只发生一次。
PHPUnit 框架是否提供了指定代码的功能,我想在 testFoo()
运行之前只运行一次,而不是为 fooProvider()
返回的每个元素运行一次> 或套件中的每个测试一次(与 setUp()
一样)?
最佳答案
使用静态私有(private)属性来标记该方法已被重新定义。您需要它是静态的,因为测试类是针对 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;
}
}
}
关于PHPUnit 设置以使用 dataProvider 运行单个测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35849801/