【发布时间】:2015-04-20 14:35:26
【问题描述】:
我的一个 phpunit 测试使用了一个需要很长时间才能生成的数据集(由数据提供者提供)。当我从执行中排除这个测试时,它的 dataprovider 方法仍然被执行。
如何跳过数据提供者的执行?
【问题讨论】:
标签: phpunit dataprovider
我的一个 phpunit 测试使用了一个需要很长时间才能生成的数据集(由数据提供者提供)。当我从执行中排除这个测试时,它的 dataprovider 方法仍然被执行。
如何跳过数据提供者的执行?
【问题讨论】:
标签: phpunit dataprovider
如果您从测试内部跳过慢速测试,使用$this->markTestSkipped(),则无法阻止执行 dataProvider。
这是因为 PHPUnit 必须在执行测试之前获取将传递给测试的数据。
可能的解决方案:
从命令行(-d key[=value] 选项)设置一个环境变量,dataProvider 和慢速测试都将读取该变量。 dataProvider 将返回一个虚拟数组,并且测试会将自身标记为已跳过。
使用@group 注释将测试标记为慢,并使用--exclude-group 命令行选项,这样就不会执行慢组测试
重构测试,因此不使用 dataProviders,假设不将测试作为不同的案例会带来不便。
【讨论】: