【问题标题】:Code coverage on single line if statements单行 if 语句的代码覆盖率
【发布时间】:2014-08-12 14:41:50
【问题描述】:

我是 PHP 新手并使用 PHPunit。有了这个,我正在做一个项目,并试图为我的单元测试保持 100% 的代码覆盖率。我发现即使单元测试从未在该行上评估 TRUE,PHPunit 也会生成单行“if”语句。有没有办法让 PHPunit 代码覆盖率来识别这一点?

示例 - 即使从未抛出异常,以下行也会显示为已覆盖:

if (false) throw new \Exception('This never gets thrown.');

示例 - 如果我这样编写代码,代码覆盖率显示准确(但我不喜欢这样编写代码):

if (false) {
  throw new \Exception('This never gets thrown.');
}

有没有办法将我的代码保留为单行 IF 语句,并在 IF 语句的右侧从不执行时显示 PHPunit?

【问题讨论】:

  • 您在这里犯了两个错误:- 1 使用单行 if 语句。 2 坚持100%的代码覆盖率。第一个是不好的做法,第二个是傻瓜的黄金。
  • 我怀疑没有办法做到这一点。因为 if 位于一行 is 执行的单行上。无括号的 if 语句也让我感到紧张。恕我直言,它们更难阅读,而且这条线的作用是不直观的:if(false) echo "Hello ";echo "World!";.
  • 感谢您的意见。

标签: php phpunit


【解决方案1】:

之前也有讨论过,但基本上归结为通过 PHP 解释器和 XDebug 等工具解析 PHP 代码。如果没有大括号,这些工具不会将代码视为不同的行,因此它们不会被标记为被正确覆盖的代码。使用大括号是目前纠正结果的唯一方法。

【讨论】:

    猜你喜欢
    • 2021-05-19
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 2012-01-18
    相关资源
    最近更新 更多