PHPUnit 设置以使用 dataProvider 运行单个测试

标签 php unit-testing phpunit runkit

我有一个带有 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/

相关文章:

php - 在 Mac OS 上禁用 PHP 邮件?

swift - 我如何在 XCODE 8 和 Swift 3 中使用 UIAutomation

PHPUnit:数据库测试的多个数据集

mocking - 检查模拟类中的嵌套数组结构

html - 如何使用 Selenium 2 PHPUnit 获取所选单选按钮的文本

php - PHP Codeigniter 中的动态菜单和子菜单

php - 无法获取记录以使用 PHP 插入到 mysql 数据中

php - 从 Laravel 4 中的数据库获取平均值

javascript - 如何使用 jest 测试 React 组件?

c# - 使用手动事务和分层事务进行单元测试