Php 功能代码覆盖率不是100%

Php 功能代码覆盖率不是100%,php,code-coverage,codeception,Php,Code Coverage,Codeception,应如何修复以下问题?我的函数在这里被标记为0%覆盖率。尾随大括号失败,我的覆盖率为0% 如果我在else中添加returnnull,则会失败(可以理解,因为它不应该失败)。如果我保留空值并将其全部放在一行上,如下所示: if($this->save()){ return true; } return null; 然后就过去了。我是测试新手,不知道我做错了什么 100%的代码覆盖率意味着您正在测试每个函数的每个结果。您的返回null行被标记为未覆盖,因为您的测试没有分支到此行 为了将它标记

应如何修复以下问题?我的函数在这里被标记为0%覆盖率。尾随大括号失败,我的覆盖率为0%

如果我在else
中添加returnnull
,则会失败(可以理解,因为它不应该失败)。如果我保留空值并将其全部放在一行上,如下所示:

if($this->save()){ return true; } return null;
然后就过去了。我是测试新手,不知道我做错了什么


100%的代码覆盖率意味着您正在测试每个函数的每个结果。您的
返回null
行被标记为未覆盖,因为您的测试没有分支到此行

为了将它标记为已覆盖,您需要一个测试,其中
$this->save()
返回
false
,并测试您的方法是否像应该的那样返回
null

在某些情况下,获得100%的代码覆盖率是不可能的,或者会导致一些非常愚蠢/怪异的测试。在这些情况下,您可以简单地忽略对特定行的测试

编辑:如果重写代码以返回
true
false
,而不是
true
null
,则可以将方法重写为:

$expression = new Expression('SYSDATE');
$this->last_login = $expression;
return $this->save();

此代码应具有100%的代码覆盖率。

100%的代码覆盖率意味着您正在测试每个函数的每个结果。您的
返回null
行被标记为未覆盖,因为您的测试没有分支到此行

为了将它标记为已覆盖,您需要一个测试,其中
$this->save()
返回
false
,并测试您的方法是否像应该的那样返回
null

在某些情况下,获得100%的代码覆盖率是不可能的,或者会导致一些非常愚蠢/怪异的测试。在这些情况下,您可以简单地忽略对特定行的测试

编辑:如果重写代码以返回
true
false
,而不是
true
null
,则可以将方法重写为:

$expression = new Expression('SYSDATE');
$this->last_login = $expression;
return $this->save();

此代码应具有100%的代码覆盖率。

可能
返回null从未到达!?如果返回false而不是null会怎么样?if($this->save()){return true;}return false;我真的不能说,我发现这个
覆盖功能是由Xdebug扩展提供的,所以它不是PHPUnit本身,而是从Xdebug获取信息。有些测试框架有注释,用于在代码覆盖率分析期间显式忽略某些代码行或代码块(例如PHPUnit)。但不知道Codeception。可能
返回null从未到达!?如果返回false而不是null会怎么样?if($this->save()){return true;}return false;我真的不能说,我发现这个
覆盖功能是由Xdebug扩展提供的,所以它不是PHPUnit本身,而是从Xdebug获取信息。有些测试框架有注释,用于在代码覆盖率分析期间显式忽略某些代码行或代码块(例如PHPUnit)。但我不知道Codeception。