【问题标题】:Is there a way to disable code coverage in PHPUnit for a single test?有没有办法为单个测试禁用 PHPUnit 中的代码覆盖率?
【发布时间】:2011-04-16 21:21:14
【问题描述】:

每次我在 PHPUnit 中运行一个单元测试时,也会生成一个代码覆盖率报告。我有一台旧电脑在工作,如果我可以在不需要它时禁用代码覆盖,那对我的 CPU 的压力就会更小。

有没有办法在每个测试的基础上禁用代码覆盖?我找不到任何可以执行此操作的命令行开关。

【问题讨论】:

  • 您是否尝试过在 XML 配置中这样做?

标签: php unit-testing phpunit


【解决方案1】:

由于这是 google 的顶级结果之一,我认为有必要指出,因为 PHPUnit 4.8 版现在支持 --no-coverage 选项来覆盖您的 xml 配置。

https://github.com/sebastianbergmann/phpunit/blob/4.8.0/ChangeLog-4.8.md

【讨论】:

  • 不,这不应该是公认的答案。问题是“一种在 PHPUnit 中为单个测试禁用代码覆盖率的方法”,而不是针对所有测试的单次运行禁用代码覆盖率。
  • @SebastianBergmann 这个问题令人困惑,因为它表明他想在不需要时禁用单个测试的代码覆盖,因为他有一台旧电脑。还提到了命令行。我没有明确说明,但我的想法是在运行单个测试时使用--no-coverage(我假设用户正在这样做)
  • 谢谢你,@GonçaloQueirós,你的回复很有帮助:)
【解决方案2】:

如何复制您的 phpunit.xml,从中删除 <logging> 节,然后执行以下操作:

phpunit --configuration new.xml

【讨论】:

  • 哇,没想到这么简单。我想我可以在运行单个测试与运行整个套件时使用不同的配置文件。
  • 我最终将我的 xml 文件缩减为 ...现在它运行得很快。希望我早点知道!
  • 我有一个运行 PHPunit 且配置为 'phpunit-FAST.xml' 的 shell 脚本 - 它不进行代码覆盖,也排除了一些较大的测试,标有 '@groupname'在源头。它在 2 秒内运行了我的大部分测试。加上覆盖率和所有其他测试,2.5 分钟。
  • 我注释掉了<coverage />,它成功了。删除 <logging /> 并没有做任何明显的事情。
  • @Jacob Heh 是的,这个答案已经有 11 年历史了,配置格式发生了一些变化。现在你可以把--no-coverage放在命令行上。
【解决方案3】:

您可以使用@coversNothing 注释测试类或测试方法。然后,测试对代码覆盖率报告没有贡献。但是,仍将收集代码覆盖率数据(减慢执行速度)。我计划在未来对此进行优化。

【讨论】:

    猜你喜欢
    • 2015-06-07
    • 2012-01-18
    • 2017-10-20
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 2014-06-27
    • 2017-04-30
    • 2020-05-25
    相关资源
    最近更新 更多