【问题标题】:how to skip execution of phpunit data provider method如何跳过phpunit数据提供者方法的执行
【发布时间】:2015-04-20 14:35:26
【问题描述】:

我的一个 phpunit 测试使用了一个需要很长时间才能生成的数据集(由数据提供者提供)。当我从执行中排除这个测试时,它的 dataprovider 方法仍然被执行。

如何跳过数据提供者的执行?

【问题讨论】:

    标签: phpunit dataprovider


    【解决方案1】:

    如果您从测试内部跳过慢速测试,使用$this->markTestSkipped(),则无法阻止执行 dataProvider。

    这是因为 PHPUnit 必须在执行测试之前获取将传递给测试的数据。

    可能的解决方案:

    1. 从命令行(-d key[=value] 选项)设置一个环境变量,dataProvider 和慢速测试都将读取该变量。 dataProvider 将返回一个虚拟数组,并且测试会将自身标记为已跳过。

    2. 使用@group 注释将测试标记为慢,并使用--exclude-group 命令行选项,这样就不会执行慢组测试

    3. 重构测试,因此不使用 dataProviders,假设不将测试作为不同的案例会带来不便。

    【讨论】:

    • 我会尝试解决方案1。解决方案2没有帮助:使用--exclude-group时,仍然会执行dataprovider。 3. 我使用数据提供者来拥有不同的测试用例。
    猜你喜欢
    • 2011-10-21
    • 1970-01-01
    • 2014-11-19
    • 1970-01-01
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2018-02-02
    相关资源
    最近更新 更多