gpt4 book ai didi

php - xDebug 和 PHPUnit 的代码覆盖率说是 100%,实际上不是

转载 作者:可可西里 更新时间:2023-11-01 00:35:29 26 4
gpt4 key购买 nike

我有以下功能:

function foo($p)
{
if ($p == null)
throw new Exception('bla');
if ($p == null)
{
throw new Exception('bla');
}
[...]
}

我对这个函数的测试没有覆盖抛出异常的行。但是 PHPUnit 告诉我第一个“抛出”语句被覆盖,第二个没有。也许第一个被解释,但没有被执行。

所以如果我还没有达到 100%,我不想收到消息“100%”。

这是 xDebug 中的错误还是我可以配置 xDebug/PHPUnit?

最佳答案

xDebug 的代码覆盖率指标是基于语句的,而不是基于行的。这意味着没有用大括号括起来的 block 的控制结构被视为单个语句。要让 xDebug 将 throw 行与 if() 测试分开,请像在第二个语句中那样用大括号括起来。

if ($p == null)                    // statement 1
throw new Exception('bla'); // rest of statement 1

对比

if ($p == null) {                  // statement 1
throw new Exception('bla'); // statement 2
}

关于php - xDebug 和 PHPUnit 的代码覆盖率说是 100%,实际上不是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9307774/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com